对于本题来说,第一时间想到的还是枚举每一位的状态,不过发现字符串的长度为100,2^100时间太大了,继续思考想到了该方法
本题条件中给出题目一定有答案
因此他们不一样的字符一定是偶数
使用数学归纳法证明:
设不一样的字符总计为n个
n = 1时,一定不会有答案,与题目矛盾
n = 2时,我们只需要时第一个字符向右不断连续变换,即可解出答案,令
左索引为i,右索引为j答案即为j - i
n = 2k时,可以将其分为k个n = 2的情况求解累加即可
n = 2k + 1,时,先计算前2k个,最后一个会因为没有匹配而没有解法,与
题目毛矛盾
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
char[] str = sc.nextLine().toCharArray();
char[] part = sc.nextLine().toCharArray();
int ans = 0;
for (int i = 0; i < str.length; i++) {
if (part[i] != str[i]) {
int j = i + 1;
while (part[j] == str[j]) j++;
//偶数一定不会出现最后一个数没有匹配的问题,即不会出现超索引的问题
ans += j - i;//累加
i = j;//跳过当前序列,进行下一个匹配
}
}
System.out.println(ans);
}
}