题目举例:
示例 1:
输入: A = “ab”, B = “ba”
输出: true
示例 2:
输入: A = “aaaaaaabc”, B = “aaaaaaacb”
输出: true
示例 3:
输入: A = “”, B = “aa”
输出: false
提示:
0 <= A.length <= 20000
0 <= B.length <= 20000
A和B仅由小写字母构成。
Java代码:
package com.renxia.java;
public class rrr {
public boolean buddyStrings(String A, String B) {
//两个字符串长度不相等的情况
if(A.length()!=B.length()){
return false;
}
char[] c1=A.toCharArray();
char[] c2=B.toCharArray();
int[] index=new int[3];
int j=0;
for(int i=0;i<c1.length;i++){
if(c1[i]==c2[i]){
continue;
}
else{
//两个字符串中出现两个以上的字符不同的情况
index[j++]=i;
if(j==3){
return false;
}
}
}
//两个字符串完全相同的情况
if(index[0]==index[1]){
//单个字符串里出现字母不相同的情况
for(int k=0;k<c1.length-1;k++){
for(int kk=1;kk<c1.length;kk++){
if(c1[kk]==c1[k]){
return true;
}
}
}
//单个字符串里字母完全相同
return false;
}
else{
//两个字符互换后,两个字符串完全相同的情况
if(c1[index[0]]==c2[index[1]] && c1[index[1]]==c2[index[0]]){
return true;
}
//除上述情况外的其他情况
return false;
}
}
public static void main(String[] args) {
System.out.println(new rrr().buddyStrings("ab", "ba"));
System.out.println(new rrr().buddyStrings("aaaaaaabc", "aaaaaaacb"));
System.out.println(new rrr().buddyStrings("", "aa"));
System.out.println(new rrr().buddyStrings("aaa", "aaa"));
System.out.println(new rrr().buddyStrings("ab", "ab"));
System.out.println(new rrr().buddyStrings("aab", "aab"));
System.out.println(new rrr().buddyStrings("aabcdef", "aadfegh"));
}
}
Java运行结果: