字符串问题之 字符串中的数字子串求和

要求

1、 忽略小数点 如 A1.3 包含的是两个数字 1 和 3

2、紧贴数字子串的左侧出现字符“-”   连续次数为奇数时候 为负数 , 偶数时候为正数。

比如: “A-1BC--12”   其中包含数字为-1 和 12

str="A1CD2E33"  返回36

str="A-1B-2C--D6E"  返回7

这个题目的实现方法有很多种,下面我来给大家演示一种哈~~~~~

这个题目就是实现 如何从左到右遍历str时,准确收集每个数字并累加起来

实现步骤:

三个变量 int  res  表示目前的累加和

int num 表示当前收集到的数字

boolean posi 表示如果把num累加到res里, num是正还是负

package TT;

public class test2 {

     public static int numSum(String str){

         if(str==null){
             return 0;
         }

         char[] charArr = str.toCharArray();
         int res = 0;
         int num =0;
         boolean posi = true;
         int cur = 0;
         for(int i =0; i<charArr.length; i++){
             cur = charArr[i]-‘0‘;
             if(cur<0 || cur>9){
                 res+=num;
                 num = 0;
                 if(charArr[i]==‘-‘){

                     if(i-1>-1 && charArr[i-1]==‘-‘){
                         posi=!posi;
                     }else{
                         posi = true;
                     }

                 }
             }else{
                 num = num * 10 + (posi ? cur : -cur);
             }

         }

         res += num;
         return res;

     }    

    public static void main(String[] args){
         String str ="A1CD2E33";
           int a = numSum(str);
           System.out.println(a);

    }

}

结果:36

时间: 2024-10-13 13:40:32

字符串问题之 字符串中的数字子串求和的相关文章

python处理字符串:将字符串中的数字相加求和

计算字符串中所有数字的和,字符串中有数字和字母组合而成如果出现连续数字,按照一个数操作具体解释在代码行里: def sum_str(str1): len1=len(str1) #首先将字符串str1的长度赋值给len1 sum = n = 0 #建立一个值为0的空变量sun #建立一个值为0的空变量n for i in range(len1): #用i来遍历字符串的长度 if 49 <= ord(str1[i]) <= 57: #判断字符ascii码是否在数字ascii值范围内 n = n *

C#中的字符串处理——找出最长数字子串

百度测试部2015年10月份的面试题之——字符串处理,找出最长的子串. 代码如下: private static string SelectNumberFromString(string input) { string result = ""; foreach (Match match in Regex.Matches(input, @"\d+"))//不要在匹配字符串的开头和结尾加上"^"和"$". { result = m

字符串中数字子串的求和

字符串中数字子串的求和 题目: 给定一个字符串str,求其中全部数字串所代表的数字之和. 要求: 1.忽略小数点字符,例如"A1.3",其中包含两个数字1和3. 2.如果紧贴数字子串的左侧出现字符'-',当连续出现次数为奇数时, 则数字视为负,连续出现的数量为偶数时,则数字视为正. 例如:"A-1BC--12",其中包含数字为-1和12. 例: str = "A1CD2E33" , 返回36 str = "A-1B--2C--D6E&q

字符串问题----字符串中数字子串的求和

字符串中数字子串的求和 给定一个字符串str,求其中全部数字串所代表的数字之和 1. 忽略小数点," A1.3 " 表示的数字就是包含两个数字 1 和 3 2. 紧贴数字的左边出现 "-",其连续出现的数量如果为奇数,就视为 负,如果为偶数,就视为 正 " A-1BC--23" 表示的是 -1 和 23 [解题思路] 首先定义三个变量, res表示目前的累加和,num表示当前收集到的数字,布尔型变量flag表示将num加到res中,num是正还是

[算法]字符串中数字子串的求和

题目: 给定一个字符串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) { //如果字符串

Python3中字符串中的数字提取方法

逛到一个有意思的博客http://cuiqingcai.com/category/technique/python 在里面看到一篇关于ValueError: invalid literal for int() with base 10错误的解析,针对这个错误,博主已经给出解决办法,使用的是re.sub 方法 1 totalCount = '100abc' 2 totalCount = re.sub("\D", "", totalCount) 但是没有说明什么含义,于

获取两个字符串中最大相同子串

2.获取两个字符串中最大相同子串.第一个动作:将短的那个串进行长度一次递减的子串打印. "cvhellobnmtanop" "andefc" 思路: 1,将短的那个子串按照长度递减的方式获取到. 2,将每获取到的子串去长串中判断是否包含,如果包含,已经找到! package tan; class Test { public static String getMaxSubString(String s1,String s2) { String max = "

字符串-02. 删除字符串中的子串(20)

输入2个字符串S1和S2,要求删除字符串S1中出现的所有子串S2,即结果字符串中不能包含S2. 输入格式: 输入在2行中分别给出不超过80个字符长度的.以回车结束的2个非空字符串,对应S1和S2. 输出格式: 在一行中输出删除字符串S1中出现的所有子串S2后的结果字符串. 输入样例: Tomcat is a male ccatat cat 输出样例: Tom is a male import java.util.Scanner; public class Main { public static

C# 使用正则表达式去掉字符串中的数字,或者去掉字符串中的非数字

/// 去掉字符串中的数字 public static string RemoveNumber(string key)          {              return Regex.Replace(key, @"\d", "");          } //去掉字符串中的非数字public static string RemoveNotNumber(string key)  {      return Regex.Replace(key, @"