题目描述

实现 atoi,将字符串转为整数。

提示:仔细考虑所有输入情况。如果你想挑战自己,请不要看下面并自己考虑所有可能的输入情况。

说明:这题解释的比较模糊(即没有指定输入格式)。你得事先汇集所有的输入情况。

atoi的要求:

这个函数需要丢弃之前的空白字符,直到找到第一个非空白字符。之后从这个字符开始,选取一个可选的正号或负号后面跟随尽可能多的数字,并将其解释为数字的值。

字符串可以在形成整数的字符后包括多余的字符,将这些字符忽略,这些字符对于函数的行为没有影响。

如果字符串中的第一个非空白的字符不是有效的整数,或者没有这样的序列存在,字符串为空或者只包含空白字符则不进行转换。

如果不能执行有效的转换,则返回 0。如果正确的值超过的可表示的范围,则返回 INT_MAX(2147483647)或 INT_MIN(-2147483648)。

解题思路分析

1.检查字符串str是否为null,或者长度为0;

2.用str.trim()去掉头尾的空格;

3.检查第一个字符为'+','-',还是就是没有,由此来设置最后的正负;

4.在循环中,检查字符是否为数字Character.isDigit()。如果不是,就直接返回结果,循环结束;

如果不是,就把字符转换为数字,进行计算;

5.最后,检查结果是否溢出;

public int myAtoi(String str) {if (str == null || str.length() == 0){return 0;       //字符串为空}str = str.trim();   //去掉首尾的空格char firstChar = str.charAt(0);int sign = 1, start = 0,len = str.length();long sum = 0;  //存储最后的结果//判断是正数,还是负数if (firstChar == '+'){sign = 1;start++;}else if (firstChar == '-'){sign = -1;start++;}for (int i = start; i < len; i++) {if (!Character.isDigit(str.charAt(i))){//不是数字return (int) sum * sign;}//是数字sum = sum * 10 + str.charAt(i) - '0';if (sign == 1 && sum > Integer.MAX_VALUE)//是正数,溢出return Integer.MAX_VALUE;if (sign == -1 && (-1) * sum < Integer.MIN_VALUE)//是负数,溢出return Integer.MIN_VALUE;}return (int) sum * sign;}

isDigit判断是否为数字,isLetter判断是否为字母;

8.字符串转整数(String to Integer)相关推荐

  1. postgresql 字符串转整数 int、integer

    --把'1234'转成整数 select cast('1234' as integer ) ; --用substring截取字符串,从第8个字符开始截取2个字符:结果是12 select cast(s ...

  2. LeetCode 8. String to Integer (atoi)(字符串)

    LeetCode 8. String to Integer (atoi)(字符串) LeetCode 8 String to Integer atoi字符串 问题描述 解题思路 参考代码 By Sca ...

  3. Java中字符串与整数的相互转换

    一.整数转字符串 1.String.valueOf() 此方法可以将Integer和int类型的转为String类型的 int num = 8;String str = String.valueOf( ...

  4. 【剑指offer-Java版】49把字符串转换为整数

    字符串转换为整数 : atoi 可能的输入: 1 带符号数 2 无符号数 3 零 4 空指针 5 超出表示范围 – 暂时仅仅是直接退出且设置最小 – 可以考虑此时抛个异常 6 非法输入,比如并不是一个 ...

  5. 面试题整理 1:将一个字符串转换为整数

    题目:输入一个表示整数的字符串,把该字符串转换成整数并输出. 分析:这道题尽管不是很难,学过C/C++语言一般都能实现基本功能,但不同程序员就这道题写出的代码有很大区别,可以说这道题能够很好地反应出程 ...

  6. LeetCode 08字符串转整数09回文数

    维护公众号:bigsai ,点赞再看,养成习惯! 08字符串转整数 题目描述: 分析: 本题主要是字符串的处理.需要注意以下几点: 去除字符前的空字符 第一个有效字符必须是符号或者数字 只能有一个符号 ...

  7. C语言字符串转换为整数(附完整源码)

    C语言字符串转换为整数 C语言字符串转换为整数完整源码 C语言字符串转换为整数完整源码 #include <assert.h> #include <stdio.h> #incl ...

  8. 《剑指offer》把字符串转为整数

    题目:将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数. 数值为0或者字符串不是一个合法的数值则返回0 输入描述: 输入一个字符串,包括数字字母符号,可以为空 输出描述: 如果是合法的数 ...

  9. leetcode初级算法6.字符串转整数(atoi)

    leetcode初级算法6.字符串转整数(atoi) 仅为个人刷题记录,不提供解题思路 题解与收获 我的解法: public int myAtoi(String s) {//避免魔法值先设spaceS ...

最新文章

  1. java arraylist 序列化_专题二、ArrayList序列化技术细节详解
  2. 定义派生类和继承类(从汇编分析)
  3. AtCoder AGC032E Modulo Pairing (二分、贪心结论)
  4. inux读取ISO文件或是光驱的方法--挂载
  5. php如何设计一个日志类,一个简单php日志类
  6. JCheckbox全选
  7. 数据库实验二 SQL语言
  8. c语言设计匀速直线运动,C语言课程设计指导书2015版(试用版)201506.doc
  9. c语言复制粘贴快捷键_C++小知识:复制粘贴代码千万要小心
  10. .NET 框架中的字符串(转自MSDN,关于字符串的详细解说!)
  11. android 放大镜功能,简单实现Android放大镜效果
  12. 【竞赛笔记】飞思卡尔智能车竞赛
  13. MATLAB中调用eemd函数
  14. 三年探索:一条自控、电信/科类学生的技术成长路线
  15. php中lpush(),lPush 命令/方法/函数
  16. QQ消息自动发送器(自动发广告、聊天,支持群,支持最新的QQ2008II Beta1) C# 版...
  17. 3250灵魂附体?诺基亚PureView概念机809
  18. MAC关闭SIP:system integrity protection is on, some features will not be available
  19. 手机WIFI传文件到局域网服务器,电脑和手机在同一局域网上,怎样无线传输文件? -电脑资料...
  20. [生存志] 第43节 齐文姜齐宣姜争艳

热门文章

  1. java基本语法——helloword
  2. 码农+码农=码农 ?
  3. windows录屏html文件,win7系统自带的屏幕录制工具如何打开使用
  4. Thread创建线程
  5. 远程桌面连接是什么?远程桌面连接使用教程
  6. LPspice 电路仿真软件
  7. 数据分析实战----北京租房数据统计分析
  8. html中菜单触碰变色,利用css filter实现菜单图片变色效果
  9. Lattice Mico8在LMS创建一个工程和创建LED程序
  10. 互联网早报:滴滴正式启动造车,滴滴副总裁、小桔车服总经理杨峻负责