刷题打卡第二天

54 阅读1分钟

问题描述

小M在工作时遇到了一个问题,他需要将用户输入的不带千分位逗号的数字字符串转换为带千分位逗号的格式,并且保留小数部分。小M还发现,有时候输入的数字字符串前面会有无用的 0,这些也需要精简掉。请你帮助小M编写程序,完成这个任务。

首先我们看到要将字符串进行一定的格式化处理,想到一个数值放到字符串中是倒叙的,而且存在小数,因此我们可以先用split(“.”)进行分解将小数部分和整数部分分开,然后对整数开始进行去0处理。用stringbulider进行格式化处理,用一个变量记录当前算是第几位数,每当该变量能够%3时就代表要加,然后可能存在一种最开始为,的情况因此对返回值要做一定的处理。

ac代码如下 public class Main { public static String solution(String s) { // write code here String[]split=s.split("\."); char[]ss=split[0].toCharArray(); int len=ss.length; int tal=0; //求出最开始的位数 for(int i=0;i<len;i++){

        if(ss[i]!='0'){
            tal=i;
            break;
        }

    }
    //
    StringBuilder sb=new StringBuilder();
    int m=0;
    for(int i=len-1;i>=tal;i--){
        //统计位数
        m++;
        sb.append(ss[i]);
        if(m%3==0){
            sb.append(",");
        }

    }
    String result=null;
    if(s.contains(".")) {
      result = sb.reverse().append(".").append(split[1]).toString();
    }else{
        result=sb.reverse().toString();
    }


    return result.charAt(0)==','?result.substring(1,result.length()):result;
}

    public static void main(String[] args) {
        System.out.println(solution("1294512.12412"));
        System.out.println(solution("0000123456789.99"));
        System.out.println(solution("987654321"));
    }

}