把字符串转换成整数

把字符串转换成整数

将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为 0 或者字符串不是一个合法的数值则返回 0

解题思路

字符 ‘0’ 的 ASCII 值是 48,‘1’ 到 ‘9’ 则是从 48 起始依次递增,因此解题的关键在于:

  • 判断有没有 ‘+’、’-‘ 等符号位,如果没有符号位默认为正整数
  • 依次取字符串中的每一个字符,判断是否在 ‘1’ 到 ‘9’ 的范围之内
public class Solution {
    public int StrToInt(String str) {
        if(str == null || str.length() == 0) {
            return 0;
        } else if(str.length() == 1 && (str.charAt(0) == '+' || str.charAt(0) == '-')) {
            return 0;
        }
        int result = 0;
        boolean flag = true;
        int j = 1;
        if(str.charAt(0) == '+') {
            str = str.substring(1, str.length());
        }
        if(str.charAt(0) == '-') {
            flag = false;
            str = str.substring(1, str.length());
        }
        for(int i = str.length() - 1; i >= 0; i--) {
            int temp = str.charAt(i) - 48;
            if(temp < 0 || temp > 9) {
                return 0;
            }
            result += temp * j;
            j *= 10;
        }
        if(flag == false) {
            return -result;
        }
        return result;
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/2603.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Cubieboard2 debian

    Cubieboard2 debian环境准备本文所使用的主机环境为kubuntu12.10,然而一般情况下,下面涉及到的命令对基于Debian的(X)ubuntu系列都应该适用。为不引起混淆,我们作如下约定:工作目录为$WORK_DIR,目标系统rootfs目录为$WORK_DIR/$ROOTFS_DIR命令均以root用户执行笔者的设定如下:WORK_DIR=/home/itv

    2022年7月22日
    5
  • 单例模式 指令重排_php单例模式

    单例模式 指令重排_php单例模式单例模式写法有很多,于是我看到了这么一种写法:publicclassSingletonTest{privateSingletonTest(){}privatestaticSingletonTestsingletonTest=null;publicstaticSingletonTestgetSingletonTest()…

    2022年10月17日
    0
  • pandas中关于DataFrame行,列显示不完全(省略)的解决办法[通俗易懂]

    pandas中关于DataFrame行,列显示不完全(省略)的解决办法[通俗易懂]有时候DataFrame中的行列数量太多,print打印出来会显示不完全。就像下图这样:列显示不全:行显示不全:添加如下代码,即可解决。#显示所有列pd.set_option(‘display.max_columns’,None)#显示所有行pd.set_option(‘display.max_rows’,None)#设置value的显示长度为100,默…

    2022年7月15日
    15
  • mysql navicat 15 激活码【2021免费激活】

    (mysql navicat 15 激活码)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~1S…

    2022年3月27日
    333
  • vscode新建html文件并快速生成标准的html代码_vscode怎么开始写代码

    vscode新建html文件并快速生成标准的html代码_vscode怎么开始写代码在vscode里新建html文件,总是要一行一行的写标准的html代码;而DW新建html文件,都会自动生成标准的html代码;所以在使用vscode是总觉得很麻烦,  各种百度终于找到了使用的方法(很好用的一个快捷键):步骤:一、先输入一个!      二、点击tab键      三、自动生成标准的html代码(见图)       …

    2022年8月21日
    5
  • MD5加密详解

    MD5加密详解MD5加密详解加密过程:密码:123456(明文形式)—–>加密后49ba59abbe56e0571.密码在请求提交后到达控制器2.到达控制后通过加密规则,转换成密文3.在经过DAO查询与数据库中已经存在的密文密码比对是否一直,一致,则放行。用户注册密码时是加密存储的用户修改密码时,也需要进行加密存储加密规则:加密规则可以自定义,在项目中通常使用BASE64和MD5,本文使用的加密规则就是MD5,BASE64:可反编码的编码方式​

    2022年7月27日
    7

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号