主要思路就是判断需要交换的xy个数是否能被2整除
如:"xx"与"yy"->这样仅需调换一次就足够,而"xy""yx"则需要调换两次,"xyx"与"yxy"则需要调换3次。
public int minimumSwap(String s1, String s2) {
int n = s1.length();
int sum1=0,sum2=0;
for (int i = 0; i < n; i++) {
if (s1.charAt(i)=='x')sum1++;
else sum2++;
if (s2.charAt(i)=='x')sum1++;
else sum2++;
}
if (sum1%2!=0||sum2%2!=0)return -1;
sum1=0;
sum2=0;
for (int i = 0; i < n ; i++) {
if (s1.charAt(i)!=s2.charAt(i)){
if (s1.charAt(i)=='x')sum1++;
else sum2++;
}
}
return (sum1)%2==1?(sum1+sum2)/2+1:(sum1+sum2)/2;
}