博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
字符数组转换成数字
阅读量:7081 次
发布时间:2019-06-28

本文共 825 字,大约阅读时间需要 2 分钟。

问题描述:

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

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

转载地址:http://lrvml.baihongyu.com/

你可能感兴趣的文章
Lync Server 2013标准版升级Skype for Business Server 2015实战(上)
查看>>
新浪、万网前系统架构师高俊峰:统一监控报警平台架构设计思路
查看>>
2011-9-25俱乐部活动
查看>>
JMeter正则表达式提取器
查看>>
Nginx
查看>>
How To Enable‘root’Account Login Solaris 11 Directly
查看>>
利用 http协议代替ftp协议进行数据传输
查看>>
写一个监控平台的思路总结和实践
查看>>
LoadRunner socket脚本开发问题合集
查看>>
试玩win8体验新特性(翻译)
查看>>
一次带大字段表记录暴增(LOBSEGMENT)引发的悲剧
查看>>
MySql 源码安装
查看>>
rmlv出错处理一例
查看>>
MongoDB学习初步
查看>>
sccm 2007 r2 step by step 之十二 操作系统分发part1
查看>>
Tokyo Tyrant基本规范(1)--介绍和安装
查看>>
实验搭建 GitLab 平台
查看>>
oracle 11g dataguard环境搭建
查看>>
Puppet 实验六 多环境配置
查看>>
项目实战:LAMP环境+Xcache+Redis,另附Memcached配置。
查看>>