题目:
给定一个字符串str,求其中全部数字串所代表的数字之和。
要求:
1.忽略小数点
2.考虑‘-’,如果有连续奇数个,则为负,如果有连续偶数个,就为正数。
举例:
str=“A-1B--2C--D6E” return 7
思路:
变量设置:
1.int res表示结果
2.int num表示当前数字
3.int cur表示 当前字符-‘0’
4.boolean表示当前当前数字的正负
程序:
public static int numSum(String str) { //如果字符串为null或者字符串的长度为零,返回0; if (str == null || str.length() == 0) return 0; char[] chars = str.toCharArray(); int res = 0; int num = 0; boolean posi = true; int cur = 0; for (int i = 0; i < chars.length; i++) { cur = chars[i] - '0'; //判断当前字符是否为数字 if (cur >= 0 && cur <= 9) { //数字增加一位 num = num * 10 + (posi ? cur : -cur); } else { //一旦遇到了非数字,那么就将当前数字加到结果res上 res += num; num = 0; //如果不是负号 if (chars[i] != '-') { posi = true; } else { //是负号,但是仍要判断当前字符是否是第一个字符||前一个字符是否是负号 if (i == 0 || chars[i - 1] != '-') { posi = false; } else posi = !posi; } } } return res; }