发现题解好像没有和我思路一样的
我是直接判断最近的两个不同点,这两个不同点之间一定会被翻且是最少的
#include<iostream>
using namespace std;
int main()
{
string s1,s2;
cin >> s1 >> s2;
int ans = 0;
int flag = 0; //判断遇到的不同点是奇次还是偶次,0是奇数次,1是偶数次
int cnt = 0; //记录奇数次不同点的下标
for(int i = 0; i < s1.size(); i++){
if(!flag){
if(s1[i] != s2[i]){
flag = 1;
cnt = i;
}
}else {
if(s1[i] != s2[i]){
flag = 0;
ans += i-cnt;
}
}
}
cout << ans << endl;
}
厉害啊,兄弟,受益匪浅