给定两个由小写字母构成的字符串 A 和 B ,只要我们可以通过交换 A 中的两个字母得到与 B 相等的结果,就返回 true ;否则返回 false 。

示例 1:

输入: A = "ab", B = "ba"
输出: true

示例 2:

输入: A = "ab", B = "ab"
输出: false

示例 3:

输入: A = "aa", B = "aa"
输出: true

示例 4:

输入: A = "aaaaaaabc", B = "aaaaaaacb"
输出: true

示例 5:

输入: A = "", B = "aa"
输出: false

提示:

  1. 0 <= A.length <= 20000
  2. 0 <= B.length <= 20000
  3. A 和 B 仅由小写字母构成。

由题意可知,字符串有且只有在A和B的长度一样,并且错位的字符有且只有两个的时候,才是亲密字符串。

这里注意一个特殊情况,当一个字符串和另外一个字符串相等并且出现两个及以上的相同字符时,也需要认定为亲密字符串。这里第一次做题时没有清晰得认识到导致错误。

代码如下:

class Solution {
public boolean buddyStrings(String A, String B) {
boolean ans = false;
if (A.length() != B.length())
return false;
else if(A.equals(B))
{
int[] count=new int[26];
for(int i=0;i<A.length();i++)
{
count[A.charAt(i)-'a']++;
if(count[A.charAt(i)-'a']>1)
return true;
} }
else { int difcount = 0;
char diffchara = 0, diffcharb = 0;
for (int i = 0; i < A.length(); i++) {
if (A.charAt(i) != B.charAt(i)) { if (difcount == 0) {
difcount++;
diffchara = A.charAt(i);
diffcharb = B.charAt(i);
} else if (difcount == 1) {
difcount++;
if (diffchara == B.charAt(i) && diffcharb == A.charAt(i))
ans = true;
else
return false;
} else {
return false;
}
} }
}
return ans; }
}

最新文章

  1. UWP学习记录11-设计和UI
  2. windows下使用adb工具查看android程序cpu和内存消耗情况
  3. while循环语句的使用
  4. 你真的说的清楚ArrayList和LinkedList的区别吗
  5. swift第二季高级语法
  6. C++ ORM ODB 入门介绍(二)
  7. max取得数组的最大值
  8. HDU3631:Shortest Path(Floyd)
  9. golang基础数据结构
  10. ASP.NET 成员资格 Part.2(使用安全控件 Login)
  11. asp.net访问网络路径方法(模拟用户登录)
  12. 带着萌新看springboot源码12(启动原理 下)
  13. request&amp;response
  14. pycharm opencv4.0安装使用
  15. 单片机的编程语言和开发环境 LET′S TRY“嵌入式编程”: 3 of 6
  16. TP3.2整合kindeditor
  17. JVM-Java8的MetaSpace
  18. android EditText设置光标、边框和图标,以及限制输入
  19. nmon 命令
  20. ubuntu 基础环境

热门文章

  1. (21)ASP.NET Core EF创建模型(关系)
  2. win10系统 plsql developer启动慢
  3. Redis学习四(运维指南).
  4. Python 调用图灵机器人 API
  5. NVDLA中Winograd卷积的设计
  6. 斯坦福机器学习课程 Exercise 习题二
  7. 3D切割轮播图
  8. [apue] 如何处理 tcp 紧急数据(OOB)?
  9. AB实验的高端玩法系列3 - AB组不随机?观测试验?Propensity Score
  10. spring boot跨域请求访问配置以及spring security中配置失效的原理解析