字符数组转换成数字

问题描述:

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

如:{'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');
    }

 

posted @ 2016-04-06 17:09  大熊猫同学  阅读(9624)  评论(0编辑  收藏  举报