第232场周赛 5701. 仅执行一次字符串交换能否使两个字符串相等
思路
- 单次遍历统计所有不同的字符个数
- 如果统计不同的字符个数为2,将两个字符位置交换后,字符串相等,则输出
true
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| class Solution { public: bool areAlmostEqual(string s1, string s2) { if(s1==s2) return true; int len=s1.size(); int cnt=0; vector<int> vec; for(int i=0;i<len;i++) { if(s1[i]!=s2[i]) { cnt++; vec.push_back(i); } } if(cnt==2&&s2[vec[0]]==s1[vec[1]]&&s2[vec[1]]==s1[vec[0]]) return true; return false; } };
|