LeetCode 1247. 交换字符使得字符串相同 (思维、数学)

交换字符使得字符串相同

  • 首先已经相同的字符无需变化
  • 统计不同位置出’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;
    }
};

猜你喜欢

转载自blog.csdn.net/qq_44846324/article/details/108352065