Leetcode1247

只有對應位置是

x

y

或者

y

x

的時候需要考慮交換

 

記第一種類型的個數爲t1, 第二種爲t2

xxxx

yyyy 

我們可以交換兩次得到

yyxx

yyxx

第二種類型的同理,

如果兩種類型的個數都是奇數的話會多出來一個

xy

yx

需要再交換兩次,

如果一個奇數一個偶數,那麼無解。

 

    public int minimumSwap(String s1, String s2) {
        if (s1.length() != s2.length()) return -1;
        int len = s2.length();
        char[] c1 = s1.toCharArray();
        char[] c2 = s2.toCharArray();
        int t1 = 0, t2 = 0;
        for (int i = 0; i < len; i++) {
            if (c1[i] == c2[i]) continue;
            if (c1[i] == 'x' && c2[i] == 'y') t1++;
            if (c1[i] == 'y' && c2[i] == 'x') t1++;
        }

        int ans = 0;
        ans += t1 / 2;
        ans += t2 / 2;
        t1 %= 2;
        t2 %= 2;
        if (t1 + t2 == 1) return -1;
        ans += t1 + t2;
        return ans;
    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章