zoukankan      html  css  js  c++  java
  • 字符串问题之 字符串中的数字子串求和

    要求

     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

    public class t3 {
        public static Integer getSubSum(String str){
            char[] chars = str.toCharArray();
            //所有number的累加
            int sum = 0;
            //整理数据值
            int number = 0;
            //'-'符号的计算
            int negativeCount = 0;
            //countFlag 决定是否进行计算
            boolean countFlag = true;
            for (int i =0 ; i< chars.length; i++){
                char nowChar = chars[i];
                //对于正负数的统计使用
                if (nowChar == '-' && chars[i-1] != '-'){
                    negativeCount = 1;
                }
                if (nowChar == '-' && chars[i-1] == '-'){
                    negativeCount++;
                }
                //数据number的计算
                int now = chars[i] - '0';
                if ( 0 < now  && now < 9 ){
                    //将字符组合成数字
                    number = number * 10 + now;
                    countFlag = true;
                } else { //所有number的累加
                        //正数情况
                        if (negativeCount % 2 == 0 && countFlag) {
                            sum = sum + number;
                        } else {
                            //负数情况
                            if (countFlag) {
                                sum = sum - number;
                            }
                        }
                        //计算完毕后的清理
                        //运算结束 number 清空
                        number = 0;
                        countFlag = false;
                }
            }
            //最后的不能遗漏
            if (0 < chars[chars.length-1] - '0' || chars[chars.length-1] - '0'< 9){
                sum = sum + number;
            }
    
            return sum;
        }
        public static void main(String[] args){
            String testStr = "A1CD2E33";
            Integer subSum = getSubSum(testStr);
            System.out.println(subSum);
        }
    }

  • 相关阅读:
    GNU make manual 翻译(九十九)
    GNU make manual 翻译( 九十五)
    Shell的 for 循环小例子
    makefile中对目录遍历的小例子
    GNU make manual 翻译(九十三)
    GNU make manual 翻译( 一百)
    GNU make manual 翻译( 九十七)
    GNU make manual 翻译( 九十八)
    mapserver4.8.3 的readme.win32的中文翻译文件
    遥控器编程
  • 原文地址:https://www.cnblogs.com/toov5/p/7359972.html
Copyright © 2011-2022 走看看