5701. 仅执行一次字符串交换能否使两个字符串相等
算法
暴力枚举 $O(n^2)$
- 特判一下两个字符串是否相等,如果相等,直接返回
true
- 枚举
s1
可能交换的下标i
和j
,交换之后如果和s2
相等,返回true
- 其他情况,均返回
false
C++ 代码
class Solution {
public:
bool areAlmostEqual(string s1, string s2) {
if (s1 == s2) return true;
int n = s1.length();
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
auto t = s1;
swap(t[i], t[j]);
if (t == s2) return true;
}
}
return false;
}
};