贪心--交换字符使得字符串相同

目录

题号

思路

    对于两个字符串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均为奇数时,优先做偶数交换,剩下的那一组再做奇数交换

实现

你可能感兴趣的:(贪心--交换字符使得字符串相同)