跳到主要内容

1790.仅执行一次字符串交换能否使两个字符串相等

链接:1790.仅执行一次字符串交换能否使两个字符串相等
难度:Easy
标签:哈希表、字符串、计数
简介:如果对 其中一个字符串 执行 最多一次字符串交换 就可以使两个字符串相等,返回 true ;否则,返回 false 。

题解 1 - cpp

  • 编辑时间:2022-10-11
  • 内存消耗:6.1MB
  • 编程语言:cpp
  • 解法介绍:遍历。
class Solution {
public:
bool areAlmostEqual(string s1, string s2) {
int list[26] = {0}, n = s1.size();
for (auto &c : s1) list[c - 'a']++;
for (auto &c : s2) if (list[c - 'a']-- == 0) return false;
int tag = -1;
bool changed = false;
for (int i = 0; i < n; i++) {
if (s1[i] == s2[i]) continue;
if (changed) return false;
if (tag == -1) { tag = i; continue; }
else if (s1[tag] == s2[i] && s2[tag] == s1[i]) changed = true;
else return false;
}
return true;
}
};