字符數組轉換成數字


問題描述:

給定一個由數字組成的字符數組,將它轉換成對應的數字值。

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM