解法一
i 为字符串下标,将同一位置上的 s1[i] 和 s2[i] 视为一组字符串。
- 当你有两组 
xy或者yx的时候,只需要交换一次,那么这两个两位置上的字符就满足相等了。 - 当你有 
xy和yx各一组时,需要交换两次来让这两个位置上的字符相等。 - 当你只剩下一组 
xy或者yx的时候,无法通过交换满足题意。 
先统计出相同位置不同字符的总数,根据奇偶性判断是否能够通过交换满足题意。
要求最小次数,采用贪心思想。先两两配对,尽可能使用第一种情况的组合方式,然后如果有单个剩下的 xy 和 yx ,再采用第二种情况的组合方式。
class Solution {public int minimumSwap(String s1, String s2) {int count_xy = 0;int count_yx = 0;for (int i = 0; i < s1.length(); ++i) {if ((s1.charAt(i) == 'x') && (s2.charAt(i) == 'y')) {++count_xy;} else if ((s1.charAt(i) == 'y') && (s2.charAt(i) == 'x')) {++count_yx;}}if ((count_xy + count_yx) % 2 != 0) {return -1;}int ans = count_xy / 2 + count_yx / 2;count_xy %= 2;count_yx %= 2;if ((count_xy != 0) && (count_yx != 0)) {ans += 2;}return ans;}}
