字符串中数字子串的求和
2016-03-21 21:38
369 查看
题目:给定一个字符串str,求其中全部数值串所代表的数值之和。
要求:
1.忽略小数点字符,例如:”A1.3”,将其看成1和3两个数字
2.如果津贴数字子串的左侧出字符“-”,当连续出现数量为奇数的时候,则试后面数字为负,连续数值为偶数时,则视为正…
eg:“A-1BC--12”结果为->11
要求:
1.忽略小数点字符,例如:”A1.3”,将其看成1和3两个数字
2.如果津贴数字子串的左侧出字符“-”,当连续出现数量为奇数的时候,则试后面数字为负,连续数值为偶数时,则视为正…
eg:“A-1BC--12”结果为->11
思路:要求时间复杂度O(N),空间O(1) 1.不管遇到什么先-'0' =>cur 2.若cur不是数字->即不在0~9之间...需要先判断posi是不是false... 因为没第一次遇到'-'则会把posi设置为false,第二次先去看看之前posi, 如果是'-',那么就约掉这个'-',把posi设置为true... 3.如果是'0'~'9',则开始计算num,每次增加10的倍数...然后各位加起来,此时还要好主意cur前边到底是正是负…
public int numSum(String str) { if (str == null) return 0; char[] chars = str.toCharArray(); int res = 0; int num = 0; boolean posi = true; for (int i = 0; i < chars.length; i++) { int cur = chars[i] - '0'; if (cur < 0 || cur > 9) { //之所以把num放到非num的判断里面是因为,到此为止这个num的 //统计已经技术,例如123A-> num= (((1)*10)+2)*10 +3 = 123, //当计算到A的时候num正好统计出来...故可以计算res+=num... res += num; num = 0; if (chars[i] == '-') { //当出现'-' 的时候就需要去判断这个'-' 到底是第一个'-' 还是第二个 //原则是第一次出现'-' 就令posi为false...出现两次就设为true... if (i - 1 > -1 && chars[i - 1] == '-') { //判断的时候,防止是'-' 开头的,则需要用i-1>-1判断... posi = true; } else { posi = false; } } else { posi = true; } } else { num = num * 10 + (posi ? cur : -cur); } } res += num; return res; }
相关文章推荐
- 机器学习 —— 概率图模型(学习:图结构)
- C语言中的指针和内存泄漏
- C语言实现泛型编程
- Netty 4.x学习笔记 - 线程模型
- AC自动机+矩阵快速幂变形 CCF201509-5 最佳文章
- 随笔-2016.3.21
- 个人所得税之后的收入
- Codeforces 474D Flowers dp(水
- day09_读写分离_Atlas小记
- day09_读写分离
- day09_读写分离_组件介绍
- HDU1728 逃离迷宫
- C语言实现多态
- [Collections.sort方法]——逻辑梳理
- ubuntu下载串口调试工具,查看串口信息
- 第三天 POJ 1363
- header(Content-Type:text/html;charset=GBK')
- python系列之 RabbitMQ -- Routing
- 《构建之法》第一、二、三章读后感
- Windows Forms编程实战学习:第三章 菜单