859. 亲密字符串

2019-06-19  本文已影响0人  祝你万事顺利

给定两个由小写字母构成的字符串 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 仅由小写字母构成。

解题思路:
当string中存在两个不同的字母的时候比较这两个字母反转后string A与string B是否相等。当有重复字母的时候进行操作,记录字母出现的次数,当字母出现次数超过两次设置一个flag标志。

public class Solution {
  public bool BuddyStrings(string A, string B)
        {
            bool flag = false;
            int[] n =new int[26];
            if (A.Length == B.Length)
            {
                int count = 0;
                //判断是否可以通过交换两个字母得到相等结果
                int index = -1;
                for (int i = 0; i < A.Length; i++)
                {
                    int bet = A[i] - 'a';
                    n[bet]++;
                    if (n[bet] >= 2)
                    {
                        flag = true;
                    }
                    if (A[i] != B[i])
                    {
                        if (index == -1)
                        {
                            index = i;
                        }
                        if (A[index] == B[i] && A[i] == B[index])
                        {
                            flag = true;
                        }
                        else
                        {
                            flag = false;
                        }
                        count++;
                    }
                }
                if (flag && count <= 2)
                {
                    return true;
                }
            }
            return false;
        }
}
上一篇 下一篇

猜你喜欢

热点阅读