您的位置:首页 > 其它

字符数组转换成数字

2016-04-06 17:09 113 查看
问题描述:

给定一个由数字组成的字符数组,将它转换成对应的数字值。

如:{'1','2','3','4'} ---> 1234

4

34 = 3*10 + 4

234 = (2*10 + 3)*10 + 4 = 2*10*10 + 3*10 + 4

1234 = ((1*10 + 2) * 10 + 3)* 10 + 4 = 1*10*10*10 + 2*10*10+3*10+4

JAVA代码如下:

public int atoi(char[] s){
int result = 0;
for(int i = 0; i < s.length; i++)
result = result * 10 + s[i] - '0';
return result;
}


解法二,这其实是一个递归。

要想将“1234” ---> 1234 首先将"123"--->123,然后将 '4'--->4

而要将"123"--->123,首先将 "12"--->12,然后将 '3'--->3

....

或者可以这样理解:

1234 = 123*10 + 4

123 = 12*10 + 3

12 = 1*10 + 2

....

递归实现如下:

public int strToInt(char[] c){
return recurse(c, c.length);
}

private int recurse(char[] c, int len){//len 表示 char[] c 的长度
if(len == 1)
return c[len -1] - '0';
else
return recurse(c, len - 1) * 10 + (c[len - 1] - '0');
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: