
思路
对于两个字符串s1和s2中对应位置相同的字符串是不需要进行交换的
由于只有x和y这两种字符
故不相等的情况的一定是s1[i]=x => s2[i]=y或s1[i]=y => s2[i]=x
则如果
xy=2使,需要进行一次交换,即"xx"、"yy",,使s1[0]与s2[1]交互即可
xy=4使,需要进行两次交换,即"xxxx"、"yyyy",,使s1[0]与s2[1]交换,结果为"yxxx"、"yxyy",再使s1[2]与s2[3]交换
故xy为偶数时,结果为xy/2
同样的
yx为偶数,则结果也为yx/2
如果
xy和yx同时存在
让xy=2,yx=1,则对xy=2交换后,yx无交换对象,故xy+yx为奇数无法得到最优解
让xy=2,yx=2,则对xy=2交换,对yx=2交换后存在最优
让xy=1,yx=1,则为"xy"和"yx",则进行两次交换后存在最优
故xy+yx必须为偶数
且
偶数的交换最优
故当存在xy和yx均为奇数时,优先做偶数交换,剩下的那一组再做奇数交换
实现

网友评论