题解 P6051 【[RC-02] 求和】
Pethly_Cat · · 题解
一道基本的字符串练习题。
我们把整个字符串遍历一遍,看到数字就保存到变量
另外,再用一个
代码如下:
#include<bits/stdc++.h>
using namespace std;
string s;
int n,sum;
bool flag,f;
int main()
{
while(getline(cin,s)){
n=sum=0;
flag=false;
f=false;
for(int i=0;i<s.size();i++){
if(s[i]>='0'&&s[i]<='9') f=true;//判断字符串有没有数字
if(s[i-1]>='0'&&s[i-1]<='9'&&(s[i]<'0'||s[i]>'9')) continue;//数字在前面且该字符不是数字,跳过字符
if(s[i]=='-'&&s[i+1]>='0'&&s[i+1]<='9') flag=true;//判断是否为负数
if(s[i]>='0'&&s[i]<='9'){//如果为数字,保存到计数器里
n=n*10+(s[i]-'0');
if(s[i+1]<'0'||s[i+1]>'9'){
if(flag==true) n=-n,flag=false;
sum+=n,n=0;
}
}
}
if(f==true) cout<<sum<<endl;
}
return 0;
}
只求二字: