[编程之美-08]字符串中数字子串的求和
来源:互联网 发布:网络通信协议图 编辑:程序博客网 时间:2024/05/29 09:59
[版权说明]
编程之美系列算法题集参考:
左程云 著《程序员代码面试指南IT名企算法与数据结构题目最优解》
July 著《编程之法面试和算法心得》
何海涛 著《剑指offer》
微软编程之美小组 著《编程之美》
部分题目摘选PAT、HDOJ、POJ以及各大互联网公司Google,BAT等面试题集。
博主采用C/C++语言实现(有些题目的解法进行优化)。希望编程之美系列博文没有侵犯版权!(若侵权,请联系我,邮箱:1511082629@nbu.edu.cn )
欢迎大家转载分享,编程之美系列算法题集,会不定期更新。鉴于博主本人水平有限,如有问题。恳请批评指正!
[Problem Description]
给定一个字符串str,求其中全部数字串所代表的数字之和。
要求:
1. 忽略小数点字符,例如”A1.3”,其中包含两个数字1和3
2. 如果紧贴数字子串的左侧出现字符”-“,当连续出现的数量为奇数时,则数字视为负数,连续出现的数量为偶数时,则数字视为正数。例如,”A-1BC–12”,其中包含数字为-1和12.
[Sample Input]
A1CD2E33
A-1B–2C–D6E
[Sample Output]
36
7
基本解法:题目意思简单,不详细阐述,详细见代码。
代码如下:
#include<iostream> #include<string> using namespace std; int numSum(string str); int main() { string s; while(cin>>s) cout<<numSum(s)<<endl; return 0; } int numSum(string str) { if(str.empty()) return 0; int res = 0, num = 0; bool posi = true; int cur = 0; for(int i = 0; i < str.length(); i ++) { cur = str[i] - '0'; if(cur < 0 || cur > 9) { res += num; num = 0;//num不要忘记置0 if(str[i] == '-') { //注意i是否是大于等于0,以及考虑前一个是不是- if(i - 1 > -1 && str[i-1] == '-') posi = !posi; else posi = false; } else posi = true; } else num = num*10 + (posi ? cur : -cur);//前一位是需要*10的 } res += num;//最后一个num不要忘记加上 return res; }
0 0
- [编程之美-08]字符串中数字子串的求和
- 字符串中数字子串的求和
- 字符串中数字子串的求和
- 字符串中数字子串的求和
- 字符串中数字子串的求和
- 字符串中数字子串的求和
- 字符串中数字子串的求和
- 字符串中数字子串的求和
- 字符串中数字子串的求和
- 字符串问题---字符串中数字子串的求和
- 字符串之数字子串求和
- 求字符串中数字子串求和
- 5.2 字符串中数字子串的求和
- 改进版---字符串中数字子串的求和
- 编程之美中判断某个字符串是否是另一个字符串的移位结构的子串
- 对字符串中的数字子串求和
- C++字符串数字子串求和
- 编程之美(数字的魅力--最大子串和,积)
- 11 持有对象
- Retrofit2.0和它的拦截器们
- OSI七层模型详解
- php基础知识 7,字符函数库
- 使用eclipse提交代码至github
- [编程之美-08]字符串中数字子串的求和
- Excel VBA 中单元格选取
- 第十二周:[leetCode] 152. Maximum Product Subarray
- socket与http的区别
- python统计文本字数
- Pointcut is not well-formed: expecting 'name pattern' at character position
- 第一个程序:HelloWorld
- [模板]
- C# Process执行cmd指令,实时获取输出并隐藏cmd窗口