当前位置:首页 » 《随便一记》 » 正文

LeetCode 859 亲密字符串[模拟] HERODING的LeetCode之路_HERODING23的博客

1 人参与  2022年05月08日 10:18  分类 : 《随便一记》  评论

点击全文阅读



解题思路:
一道并不简单的模拟题,需要考虑的情况总结下来有三种:

  1. 长度不同返回false;
  2. 完全相同且有重复字符返回true;
  3. A, B字符串有不相等的两个地方, 需要查看它们交换后是否相等即可。

正如评论所说,靠测试用例卡人的简单题,这辈子都成不了中等题,说的就是你!亲密字符串!代码如下:

class Solution {
public:
    bool buddyStrings(string s, string goal) {
        // 长度不同
        if (s.size() != goal.size()) {
            return false;
        }
        // 完全相同
        if (s == goal) {
            vector<int> count(26);
            for (int i = 0; i < s.size(); i++) {
                count[s[i] - 'a']++;
                if (count[s[i] - 'a'] > 1) {
                    return true;
                }
            }
            return false;
        } else {// 长度相同 找是否有两个不同且对应的
            int first = -1, second = -1;
            for (int i = 0; i < s.size(); i++) {
                if (s[i] != goal[i]) {
                    if (first == -1)
                        first = i;
                    else if (second == -1)
                        second = i;
                    else
                        return false;
                }
            }

            return (second != -1 && s[first] == goal[second] && s[second] == goal[first]);
        }
    }
};


点击全文阅读


本文链接:http://zhangshiyu.com/post/39710.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1