题解 | #阿拉伯数字转中文#
阿拉伯数字转中文
https://www.nowcoder.com/practice/6eec992558164276a51d86d71678b300
import java.util.*;
public class Solution {
public static void main(String[] args) {
String s = new Solution().num2cn(1000000007);
System.out.println(s);
System.out.println(new Solution().trans4(new char[]{'0','0','0','7'}));
}
StringBuilder res;
String[] bigUnit={"","万","亿"};
String[] shu={
"零",
"一",
"二",
"三",
"四",
"五",
"六",
"七",
"八",
"九"
};
String[] unit={"","十","百","千"};
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param n int整型
* @return string字符串
*/
public String num2cn (int n) {
res=new StringBuilder();
// one trick
if(n==0){
return "零";
}
if(n<0){
res.append("负");
n=-n;
}
List<String> duan4=new ArrayList<>();
StringBuilder n2str = new StringBuilder(String.valueOf(n));
int strLen = n2str.length();
// one trick
while(strLen >4){
// n==0需要单独考虑
duan4.add(n2str.substring(strLen-4).toString());
n2str.delete(strLen-4,strLen);
strLen-=4;
}
if(strLen>0)
duan4.add(n2str.toString());
for(int i=duan4.size()-1;i>=0;i--){
String cur=trans4(String.valueOf(duan4.get(i)).toCharArray());
String bU=bigUnit[i];
// one trick
if("".equals(cur))
bU="";
res.append(cur).append(bU);
}
// one trick
return res.toString().replaceAll("^一十","十");
}
public String trans4 (char[] duan){
StringBuilder cur=new StringBuilder();
for(int i=0;i<duan.length;i++){
String curShu=shu[duan[i]-'0'];
String u=unit[duan.length-i-1];
// one trick
if("零".equals(curShu)){
u="";
}
cur.append(curShu).append(u);
}
return handleZero(cur.toString());
}
String handleZero(String s){
//two trick
s=s.replaceAll("零+","零");
if(s.endsWith("零"))
return s.substring(0,s.length()-1);
return s;
}
}
TCL公司福利 1293人发布
查看7道真题和解析