- 首先已经相同的字符无需变化
- 统计不同位置出’x’, ‘y’的数量,记s1串中不同处的’x’ 、‘y’ 的数量分别为x1,x2
则s2串不同处的’x’ 、‘y’ 的数量分别为x2,x1;
又’x’、'y’字符数量为偶数,则 2 ∣ ( x 1 + x 2 ) 2 | (x1+x2) 2∣(x1+x2)
class Solution {
public:
int minimumSwap(string s1, string s2) {
int x1 = 0, x2 = 0;
for(int i=0;i<s1.size();i++){
if(s1[i]!=s2[i]){
if(s1[i]=='x') x1++;
else x2++;
}
}
if(abs(x1+x2)%2) return -1;
int ans = x1/2+x2/2; // 此时x1、x2 同奇同偶
if(x1%2) ans += 2; // 示例2
return ans;
}
};