[模拟字符串] [洛谷] P1597 语句解析
输入字符串s
int一个指示下标从前往后读
如果是s[i]是a a=a[i+3]
a[i+3]可能是数字也可能是字母 所以要具体判断
每次赋值后指示下标加4
为什么呢 a=b;c=a;
举个例子 下标加一可能读到b 再赋值 b= “=“明显不对
加四是从引号开始判 c=a;
上代码
#include <iostream>
using namespace std;
int main()
{
int a=0,b=0,c=0;
string s;
cin>>s;
for(int i=0;i<s.length();i++)
{
if(s[i]=='a')
{
if(s[i+3]>='0'&&s[i+3]<='9')//s[i+3]为数字
a=s[i+3]-'0';
else if(s[i+3]=='b')//s[i+3]为字母 下同
a=b;
else if(s[i+3]=='c')
a=c;
i+=4;//避免读到非被赋值字母
}
else if(s[i]=='b')
{
if(s[i+3]>='0'&&s[i+3]<='9')
b=s[i+3]-'0';
else if(s[i+3]=='a')
b=a;
else if(s[i+3]=='c')
b=c;
i+=4;
}
else if(s[i]=='c')
{
if(s[i+3]>='0'&&s[i+3]<='9')
c=s[i+3]-'0';
else if(s[i+3]=='b')
c=b;
else if(s[i+3]=='a')
c=a;
i+=4;
}
}
cout<<a<<' '<<b<<' '<<c<<endl;
return 0;
}