字符数组转换成数字

问题描述:

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

如:{‘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‘);
    }
时间: 2024-10-20 20:43:11

字符数组转换成数字的相关文章

字符如何转换成数字

void statNumber_iterative(int n) { int h,k=0; char d[16]; //把数字n保存入字符串数组d中 sprintf(d,"%d",n); //字符转换成数字,相当于h = d[k] - 48 h=d[k]-'0'; } 例如 n=123,经过sprintf()函数处理,d[16]={'1', '2', '3'}:h=d[0]-'0'='1'-'0'就是两者之间的ASCII码进行相减,结果就是1.

sql把字符数组转换成表 :把字符串1,2,3变成表里的行数据

需求:把字符串1,2,3变成表里的行数据 方法:用自定义函数实现 /* 获取字符串数组的 Table */ if exists (select 1 from sysobjects where id = object_id('Get_StrArrayStrOfTable' )) drop Function Get_StrArrayStrOfTable go CREATE function Get_StrArrayStrOfTable( @SourceSql varchar (max), @StrS

mysql将字符转换成数字

在操作mysql时,经常需要将字符转换成数字,这一步虽然简单,但不常用的话也很容易忘记,现将在网上找到的方法记录如下: 1.将字符的数字转成数字,比如'0'转成0可以直接用加法来实现例如:将pony表中的d 进行排序,可d的定义为varchar,可以这样解决select * from pony order by (d+0)2.在进行ifnull处理时,比如 ifnull(a/b,'0') 这样就会导致 a/b成了字符串,因此需要把'0'改成0,即可解决此困扰3.比较数字和varchar时,比如a

将字符串转换成数字

问题描述: Implement atoi to convert a string to an integer. 解题思路: 对于一个字符串需要注意一下几点: 1.过滤字符串开头的所有空格字符: 2.注意数字字符前面的"+"和"-"字符,从而确定数字的正负号: 3.只处理数字字符,一旦出现非数字字符,立即停止字符串处理,并返回已处理的结果: 4.返回结果时要注意数字越界的问题,不能大于最大值,不能小于最小值. class Solution { public: int

js 字符串转换成数字的三种方法

在js读取文本框或者其它表单数据的时候获得的值是字符串类型的,例如两个文本框a和b,如果获得a的value值为11,b的value值为9 ,那么a.value要小于b.value,因为他们都是字符串形式的.在网上找了一下js字符串转数字的文章,这个比较全 方法主要有三种 转换函数.强制类型转换.利用js变量弱类型转换. 1. 转换函数: js提供了parseInt()和parseFloat()两个转换函数.前者把值转换成整数,后者把值转换成浮点数.只有对String类型调用这些方法,这两个函数才

JS字符串转换成数字

方法主要有三种 转换函数.强制类型转换.利用js变量弱类型转换. 1. 转换函数: js提供了parseInt()和parseFloat()两个转换函数.前者把值转换成整数,后者把值转换成浮点数.只有对String类型调用这些方法,这两个函数才能正确运行:对其他类型返回的都是NaN(Not a Number). 一些示例如下: 复制代码 代码如下: parseInt("1234blue"); //returns 1234parseInt("0xA"); //retu

JavaScript字符串转换成数字的三种方法

在js读取文本框或者其它表单数据的时候获得的值是字符串类型的,例如两个文本框a和b,如果获得a的value值为11,b的value值为9 ,那么a.value要小于b.value,因为他们都是字符串形式的.在网上找了一下js字符串转数字的文章,这个比较全 方法主要有三种 转换函数.强制类型转换.利用js变量弱类型转换. 1. 转换函数: js提供了parseInt()和parseFloat()两个转换函数.前者把值转换成整数,后者把值转换成浮点数.只有对String类型调用这些方法,这两个函数才

C#字母转换成数字/数字转换成字母 - ASCII码转换

字母转换成数字 byte[] array = new byte[1];   //定义一组数组arrayarray = System.Text.Encoding.ASCII.GetBytes(string); //string转换的字母int asciicode = (short)(array[0]); ASCII码 = Convert.ToString(asciicode); //将转换一的ASCII码转换成string型 数字转换成字母byte[] array = new byte[1];ar

js 字符串转换成数字的三种方法--转

在js读取文本框或者其它表单数据的时候获得的值是字符串类型的,例如两个文本框a和b,如果获得a的value值为11,b的value值为9 ,那么a.value要小于b.value,因为他们都是字符串形式的.在网上找了一下js字符串转数字的文章,这个比较全 方法主要有三种 转换函数.强制类型转换.利用js变量弱类型转换. 1. 转换函数: js提供了parseInt()和parseFloat()两个转换函数.前者把值转换成整数,后者把值转换成浮点数.只有对String类型调用这些方法,这两个函数才