力扣(LeetCode)亲密字符串 个人题解
2024-10-07 15:46:53
给定两个由小写字母构成的字符串 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
提示:
0 <= A.length <= 20000
0 <= B.length <= 20000
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; }
}
最新文章
- UWP学习记录11-设计和UI
- windows下使用adb工具查看android程序cpu和内存消耗情况
- while循环语句的使用
- 你真的说的清楚ArrayList和LinkedList的区别吗
- swift第二季高级语法
- C++ ORM ODB 入门介绍(二)
- max取得数组的最大值
- HDU3631:Shortest Path(Floyd)
- golang基础数据结构
- ASP.NET 成员资格 Part.2(使用安全控件 Login)
- asp.net访问网络路径方法(模拟用户登录)
- 带着萌新看springboot源码12(启动原理 下)
- request&;response
- pycharm opencv4.0安装使用
- 单片机的编程语言和开发环境 LET′S TRY“嵌入式编程”: 3 of 6
- TP3.2整合kindeditor
- JVM-Java8的MetaSpace
- android EditText设置光标、边框和图标,以及限制输入
- nmon 命令
- ubuntu 基础环境