可以用两个指针表示两个队头的位置。如果队头被吃了,指针向后移一位即可。这样一来,模拟就很方便了。
AC 代码
#include<bits/stdc++.h>
using namespace std;
int main(){
string s,s1;
cin>>s>>s1;
int cnt1=0,cnt2=0;
int l=0,r=0;//两人糖果队头指针
while(l<s.size()&&r<s1.size()){
if(s[l]==s1[r]){
cnt1++,cnt2++;
l++,r++;
}else{
if(s[l]=='R'){
if(s1[r]=='G'){
r++;
cnt1++;
}else{
l++;
cnt2++;
}
}else if(s[l]=='G'){
if(s1[r]=='B'){
cnt1++;
r++;
}else{
cnt2++;
l++;
}
}else{
if(s1[r]=='R'){
cnt1++;
r++;
}else{
cnt2++;
l++;
}
}
}
}
if(l==s.size()&&r==s1.size()){
printf("%d\n%d",cnt1,cnt2);
}else{
if(l==s.size()){
cnt2+=s1.size()-r;
}else{
cnt1+=s.size()-l;
}
printf("%d\n%d",cnt1,cnt2);
}
return 0;
}
浙公网安备 33010602011771号