8. String to Integer (atoi) 字符串转成整数
[抄题]:
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)、符号(用标记变量)、越界
[输入量]:空: 正常情况:特大:特小:程序里处理到的特殊情况:异常情况(不合法不合理的输入):
[画图]:
[一刷]:
- 注意要把string转成字符才能操作
- 字符不是统一处理的 在符号处理和越界处理之后,都要再分别进行i++
[二刷]:
- 整数的范围是 ‘0’ <= c <= '9',必须有等号
[三刷]:
- 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) 字符串转成整数相关推荐
- LeetCode 8. String to Integer (atoi)(字符串)
LeetCode 8. String to Integer (atoi)(字符串) LeetCode 8 String to Integer atoi字符串 问题描述 解题思路 参考代码 By Sca ...
- LeetCode算法入门- String to Integer (atoi)-day7
LeetCode算法入门- String to Integer (atoi)-day7 String to Integer (atoi): Implement atoi which converts ...
- Leetcode错题本1-实现一个 atoi 函数,使其能将字符串转换成整数。
题目描述 请你来实现一个 atoi 函数,使其能将字符串转换成整数. 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止.接下来的转化规则如下: 如果第一个非空字符为正或者 ...
- 把字符串转换成整数(atoi)
题目 描述 写一个函数 StrToInt,实现把字符串转换成整数这个功能.不能使用 atoi 或者其他类似的库函数.传入的字符串可能有以下部分组成: 1.若干空格 2.(可选)一个符号字符('+' 或 ...
- 【细节实现题】LeetCode 8. String to Integer (atoi)
LeetCode 8. String to Integer (atoi) Solution1:我的答案 参考链接:http://www.cnblogs.com/grandyang/p/4125537. ...
- Kotlin实现LeetCode算法题之String to Integer (atoi)
题目String to Integer (atoi)(难度Medium) 大意是找出给定字串开头部分的整型数值,忽略开头的空格,注意符号,对超出Integer的数做取边界值处理. 方案1 1 clas ...
- oracle 转化为整数,字符串转换成整数——从源码学习
字符串转换成整数:输入一个表示整数的字符串,把该字符串转换成整数并输出,例如输入字符串"345",则输出整数345. 在笔试面试中,atoi 即「字符串转换成整数」是一个经典问题了 ...
- 程序员面试题精选100题(17)-把字符串转换成整数[算法]
题目:输入一个表示整数的字符串,把该字符串转换成整数并输出.例如输入字符串"345",则输出整数345. 分析:这道题尽管不是很难,学过C/C++语言一般都能实现基本功能,但不同程 ...
- 2019-02-26-算法-进化(字符串转换成整数)
题目描述: 请你来实现一个 atoi 函数,使其能将字符串转换成整数. 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止. 当我们寻找到的第一个非空字符为正或者负号时,则 ...
最新文章
- 参数量110亿,附赠750GB数据集,Google提NLP预训练模型T5
- 使用HTML语言编写HTML教程,HTML教程:HTML编写小经验
- hdoj 1247 Hat’s Words(字典树)
- php中的解析范围符,如何合理使用php7范围解析操作符
- crm采用soap删除记录
- Linux之特殊的环境变量IFS以及如何删除带有空格的目录
- vbox里面的Ubuntu虚拟机与主机win7之间设置共享文件夹
- ServletContextListener使用详解
- 线性代数导论20——克莱姆法则、逆矩阵、体积
- 代码 生成迅雷链接启动迅雷下载
- MATLAB中的norm函数
- 绿色版电子书PDF转换Word转换器
- 计算机sense服务无法启动,workstation服务无法启动解决办法
- java网吧会员计费管理系统springboot+vue
- 万里汇WorldFirst支持从PayPal提现美元(实战教程)
- 所谓的flash、ddr、ufs
- 集成电路模拟版图入门——转行版图基础学习笔记(一)
- 苹果6访问限制密码4位_苹果ios签名:AppleID为什么开启双重认证那么重要
- python读取配置文件列表失败_从配置文件python中读取列表
- 3dsmax快捷键大全
热门文章
- Java 技术篇-linux系统下安装jdk、设置java环境变量实例演示
- leetcode C++ 2. 两数相加 给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。 如果,我们将这两个数
- C# 学习笔记(10)加速球
- git服务器(gitea)安装说明
- 关于matlab的单精度与双精度
- Pycharm如何关掉jupyter notebook server
- pandas将Series变成键值对
- java中什么表示菜单项_下列类型中,表示菜单项的是( )。_学小易找答案
- Spring启动执行流程梳理
- 修改Tomcat可支持get传参方式的url长度,get形式