亲密字符串

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

思路分析:
字符串 A 与 B 相等的情况下,因此,我们应当检查每个索引 i 以寻找具有相同值的两个匹配即为亲密字符串。

字符串 A 与 B 不相等的情况下,找出两个字符不相等的索引,判断交换两个索引对应的字符后是否相等

class Solution {
    public boolean buddyStrings(String A, String B) {
        if(A.length()!=B.length()){
            return false;
        }
        if(A.equals(B)){
            int[] flag=new int[26];
            for(char x:A.toCharArray()){
                flag[x-'a']++;
            }
            for(int i=0;i<26;i++){
                if(flag[i]>1){
                    return true;
                }
            }
            return false;
        }else{
            int first=-1;
            int second=-1;
            for(int i=0;i<A.length();i++){
                if(A.charAt(i)!=B.charAt(i)){
                    if(first==-1){
                        first=i;
                    }else if(second==-1){
                        second=i;
                    }else{
                        return false;
                    }
                }
            }
            return (second!=-1&&A.charAt(first)==B.charAt(second)&&A.charAt(second)==B.charAt(first));
        }
    }
}
发布了118 篇原创文章 · 获赞 12 · 访问量 2583

猜你喜欢

转载自blog.csdn.net/qq_42174669/article/details/104092993