[抄题]:

Input: "42"
Output: 42

Example 2:

Input: "   -42"
Output: -42
Explanation: The first non-whitespace character is '-', which is the minus sign.Then take as many numerical digits as possible, which gets 42.

Example 3:

Input: "4193 with words"
Output: 4193
Explanation: Conversion stops at digit '3' as the next character is not a numerical digit.

Example 4:

Input: "words and 987"
Output: 0
Explanation: The first non-whitespace character is 'w', which is not a numerical digit or a +/- sign. Therefore no valid conversion could be performed.

Example 5:

Input: "-91283472332"
Output: -2147483648
Explanation: The number "-91283472332" is out of the range of a 32-bit signed integer.Thefore INT_MIN (−231) is returned.

[暴力解法]:

时间分析:

空间分析:

[优化后]:

时间分析:

空间分析:

[奇葩输出条件]:

[奇葩corner case]:

[思维问题]:

根本不知道应该怎么处理越界啊:

先设置一个bound变量,-2147483648/10。当前num > bound || num == bond & digit > 7都不行

[英文数据结构或算法,为什么不用别的数据结构或算法]:

[一句话思路]:

写整齐点,要考虑到的问题:空格(用trim)、符号(用标记变量)、越界

[输入量]:空: 正常情况:特大:特小:程序里处理到的特殊情况:异常情况(不合法不合理的输入):

[画图]:

[一刷]:

  1. 注意要把string转成字符才能操作
  2. 字符不是统一处理的 在符号处理和越界处理之后,都要再分别进行i++

[二刷]:

  1. 整数的范围是 ‘0’  <= c <= '9',必须有等号

[三刷]:

  1. num的进位方式是 num = num * 10 + digit digit是最后一位数,不用新相乘

[四刷]:

[五刷]:

[五分钟肉眼debug的结果]:

[总结]:

digit是最后一位数,不用新相乘

[复杂度]:Time complexity: O(n) Space complexity: O(1)

[算法思想:迭代/递归/分治/贪心]:

[关键模板化代码]:

[其他解法]:

[Follow Up]:

[LC给出的题目变变变]:

[代码风格] :

[是否头一次写此类driver funcion的代码] :

[潜台词] :

class Solution {public int myAtoi(String str) {//handle spacestr = str.trim();int i = 0;char[] c = str.toCharArray();//signsint sign = 1;if (i < c.length && (c[i] == '+' || c[i] == '-')) {if (c[i] == '-') sign = -1;i++;}//out of bound in two waysint bound = Integer.MAX_VALUE / 10;int num = 0;while (i < c.length && (c[i] >= '0' && c[i] <= '9')){int digit = c[i] - '0';//out of boundif (num > bound || (num == bound && digit > 7)) {//depend on signreturn (sign == 1) ? Integer.MAX_VALUE : Integer.MIN_VALUE;}num = digit + num * 10;i++;}return num * sign;}
}

View Code

转载于:https://www.cnblogs.com/immiao0319/p/9383582.html

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

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

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

  2. LeetCode算法入门- String to Integer (atoi)-day7

    LeetCode算法入门- String to Integer (atoi)-day7 String to Integer (atoi): Implement atoi which converts ...

  3. Leetcode错题本1-实现一个 atoi 函数,使其能将字符串转换成整数。

    题目描述 请你来实现一个 atoi 函数,使其能将字符串转换成整数. 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止.接下来的转化规则如下: 如果第一个非空字符为正或者 ...

  4. 把字符串转换成整数(atoi)

    题目 描述 写一个函数 StrToInt,实现把字符串转换成整数这个功能.不能使用 atoi 或者其他类似的库函数.传入的字符串可能有以下部分组成: 1.若干空格 2.(可选)一个符号字符('+' 或 ...

  5. 【细节实现题】LeetCode 8. String to Integer (atoi)

    LeetCode 8. String to Integer (atoi) Solution1:我的答案 参考链接:http://www.cnblogs.com/grandyang/p/4125537. ...

  6. Kotlin实现LeetCode算法题之String to Integer (atoi)

    题目String to Integer (atoi)(难度Medium) 大意是找出给定字串开头部分的整型数值,忽略开头的空格,注意符号,对超出Integer的数做取边界值处理. 方案1 1 clas ...

  7. oracle 转化为整数,字符串转换成整数——从源码学习

    字符串转换成整数:输入一个表示整数的字符串,把该字符串转换成整数并输出,例如输入字符串"345",则输出整数345. 在笔试面试中,atoi 即「字符串转换成整数」是一个经典问题了 ...

  8. 程序员面试题精选100题(17)-把字符串转换成整数[算法]

    题目:输入一个表示整数的字符串,把该字符串转换成整数并输出.例如输入字符串"345",则输出整数345. 分析:这道题尽管不是很难,学过C/C++语言一般都能实现基本功能,但不同程 ...

  9. 2019-02-26-算法-进化(字符串转换成整数)

    题目描述: 请你来实现一个 atoi 函数,使其能将字符串转换成整数. 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止. 当我们寻找到的第一个非空字符为正或者负号时,则 ...

最新文章

  1. 参数量110亿,附赠750GB数据集,Google提NLP预训练模型T5
  2. 使用HTML语言编写HTML教程,HTML教程:HTML编写小经验
  3. hdoj 1247 Hat’s Words(字典树)
  4. php中的解析范围符,如何合理使用php7范围解析操作符
  5. crm采用soap删除记录
  6. Linux之特殊的环境变量IFS以及如何删除带有空格的目录
  7. vbox里面的Ubuntu虚拟机与主机win7之间设置共享文件夹
  8. ServletContextListener使用详解
  9. 线性代数导论20——克莱姆法则、逆矩阵、体积
  10. 代码 生成迅雷链接启动迅雷下载
  11. MATLAB中的norm函数
  12. 绿色版电子书PDF转换Word转换器
  13. 计算机sense服务无法启动,workstation服务无法启动解决办法
  14. java网吧会员计费管理系统springboot+vue
  15. 万里汇WorldFirst支持从PayPal提现美元(实战教程)
  16. 所谓的flash、ddr、ufs
  17. 集成电路模拟版图入门——转行版图基础学习笔记(一)
  18. 苹果6访问限制密码4位_苹果ios签名:AppleID为什么开启双重认证那么重要
  19. python读取配置文件列表失败_从配置文件python中读取列表
  20. 3dsmax快捷键大全

热门文章

  1. Java 技术篇-linux系统下安装jdk、设置java环境变量实例演示
  2. leetcode C++ 2. 两数相加 给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。 如果,我们将这两个数
  3. C# 学习笔记(10)加速球
  4. git服务器(gitea)安装说明
  5. 关于matlab的单精度与双精度
  6. Pycharm如何关掉jupyter notebook server
  7. pandas将Series变成键值对
  8. java中什么表示菜单项_下列类型中,表示菜单项的是( )。_学小易找答案
  9. Spring启动执行流程梳理
  10. 修改Tomcat可支持get传参方式的url长度,get形式