1 条题解
-
0
自动搬运
来自洛谷,原作者为

Pethly_Cat
东隅已逝,桑榆非晚。搬运于
2025-08-24 22:16:53,当前版本为作者最后更新于2020-02-11 12:41:21,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
一道基本的字符串练习题。
我们把整个字符串遍历一遍,看到数字就保存到变量中。如果前面的位置是数字,而本位不是,那就跳过,再把前面得到的数加起来,清零。
另外,再用一个变量来判断字符串里有没有数字,如果有则不输出。
代码如下:
#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; }只求二字:
过和赞
- 1
信息
- ID
- 3884
- 时间
- 1000ms
- 内存
- 125MiB
- 难度
- 3
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者