P9950 [USACO20FEB] Mad Scientist B

· · 题解

思路

求这两个字符串中有多少个连续的子串不同。枚举 AB 这两个字符串,首先特判第一个字符,如果 AB 的第一个字符一样,答案直接加一。如果 A 的第 i 个字符和 B 的第 i 个字符不一样,并且 A 的第 i-1 个字符和 B 的第 i-1 个字符一样,答案加一。

代码

#include<iostream>
#include<string>
int n,res;
std::string a,b;
int main(){
    std::cin>>n>>a>>b,res=0;
    for(int i=0;i<n;i++)
        if(a[i]!=b[i] and i==0)res++;//第一个字符不同一定要变
        else if(a[i]!=b[i] and a[i-1]==b[i-1])res++;//当前字符不相同,但是前一个字符相同(说明前一个字符不用变)答案+1
    std::cout<<res;
}