LeetCode 1790.仅执行一次字符串交换能否使两个字符串相等
思路
暴力模拟,根据题目思路直接写代码即可,依次遍历字符串的每一位,如果相等则继续,如果不相同则分别储存在记录量flag1,flag2中,如果不同的位置超过两个或者只有一个则返回false,如果不存在不同位置或者不同的位置相同就返回true
代码
class Solution {
public boolean areAlmostEqual(String s1, String s2) {
int n=s1.length(), flag1=-1, flag2=-1;
for(int i=0;i<n;i++)
{
if(s1.charAt(i)==s2.charAt(i)) continue;
if(flag1==-1) flag1=i;
else if(flag2==-1) flag2=i;
else return false;
}
if(flag1==-1) return true;
if(flag2==-1) return false;
return s1.charAt(flag1)==s2.charAt(flag2) && s1.charAt(flag2)==s2.charAt(flag1);
}
}