• 力扣(LeetCode)亲密字符串 个人题解


    给定两个由小写字母构成的字符串 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;
    
        }
    }
  • 相关阅读:
    Discuz!X3.1插件创建与配置
    Discuz!X3.1如何设置下载附件扣除积分
    Discuz!X3.1标签使用(二)
    Discuz!X3.1标签使用(一)
    Discuz!X3.1后台操作技巧(整合)
    Discuz!X3.1数据库的操作(三)
    Discuz!X3.1数据库的操作(二)
    Discuz!X3.1数据库的操作(一)
    Discuz!X3.2导航下拉菜单样式修改
    【discuz x3】源代码中的sql调用
  • 原文地址:https://www.cnblogs.com/axiangcoding/p/10388455.html
Copyright © 2020-2023  润新知