LeetCode 859 亲密字符串[模拟] HERODING的LeetCode之路
Posted HERODING23
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 859 亲密字符串[模拟] HERODING的LeetCode之路相关的知识,希望对你有一定的参考价值。
解题思路:
一道并不简单的模拟题,需要考虑的情况总结下来有三种:
- 长度不同返回false;
- 完全相同且有重复字符返回true;
- 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]);
;
以上是关于LeetCode 859 亲密字符串[模拟] HERODING的LeetCode之路的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode 384. 打乱数组 / 859. 亲密字符串/ 423. 从英文中重建数字