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 space
str = str.trim();
int i = 0;
char[] c = str.toCharArray();
//signs
int sign = 1;
if (i < c.length && (c[i] == '+' || c[i] == '-')) {
if (c[i] == '-') sign = -1;
i++;
}
//out of bound in two ways
int 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 bound
if (num > bound || (num == bound && digit > 7)) {
//depend on sign
return (sign == 1) ? Integer.MAX_VALUE : Integer.MIN_VALUE;
}
num = digit + num * 10;
i++;
}
return num * sign;
}
}
8. String to Integer (atoi) 字符串转成整数的更多相关文章
- [Leetcode] String to integer atoi 字符串转换成整数
Implement atoi to convert a string to an integer. Hint: Carefully consider all possible input cases. ...
- 【LeetCode每天一题】String to Integer (atoi)(字符串转换成数字)
Implement atoi which converts a string to an integer.The function first discards as many whitespace ...
- String to Integer (atoi) - 字符串转为整形,atoi 函数(Java )
String to Integer (atoi) Implement atoi to convert a string to an integer. [函数说明]atoi() 函数会扫描 str 字符 ...
- 【LeetCode】8. String to Integer (atoi) 字符串转换整数
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 公众号:负雪明烛 本文关键词:字符串转整数,atoi,题解,Leetcode, 力扣,P ...
- 【LeetCode】String to Integer (atoi)(字符串转换整数 (atoi))
这道题是LeetCode里的第8道题. 题目要求: 请你来实现一个 atoi 函数,使其能将字符串转换成整数. 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止. 当我们 ...
- Leetcode 8 String to Integer (atoi) 字符串处理
题意:将字符串转化成数字. 前置有空格,同时有正负号,数字有可能会溢出,这里用long long解决(leetcode用的是g++编译器),这题还是很有难度的. class Solution { pu ...
- [leetcode]8. String to Integer (atoi)字符串转整数
Implement atoi which converts a string to an integer. The function first discards as many whitespace ...
- [LeetCode] String to Integer (atoi) 字符串转为整数
Implement atoi to convert a string to an integer. Hint: Carefully consider all possible input cases. ...
- 【LeetCode】8. String to Integer (atoi) 字符串转整数
题目: Implement atoi to convert a string to an integer. Hint: Carefully consider all possible input ca ...
随机推荐
- 如何将项目连接数据库(连接mysql)
首先需要在项目中加入这一串代码: //加载驱动类 连接数据库有多种方式 比如:jdbc 桥接 Connection con=null; try { Class.forName("com.my ...
- win10的linux子系统安装及使用
最近需要用到linux但是又不想装双系统,正好win10推出了linux子系统,省事了,自己也是煞费苦心才整明白 1.首先你要是很新的win10版本(1607及已上),这样才有下面的步骤 依次在 设置 ...
- asp.net:mv4 FileResult在IE8中下载不显示文件名和扩展名而显示Action方法名了!
IE8下,用户点击下载文件,会发现文件类型失丢的问题,解决方案如下: //IE8下载时,只显示action的名字,没有文件名和后缀 @仰止网Simba //return File(bufferbyte ...
- maya中的顶点平滑算法(vertex smooth algorithm)
继上文继续写.有了顶点迭代器之后就可以利用MItMeshVertex类的getConnectedVertices方法来获取相连点并代入平滑算法. 选择什么样的平滑算法呢?本人比较懒,直接打开了计算机图 ...
- 在他机上还原DB2的备份
在服务器获取得到db2的备份文件,拷贝到d盘db2_backup目录下面 在windows下的时间戳标记为时间目录名+文件名.001前面的 "2014022\0001006.001" ...
- json 中关于json数组跟json对象的区别
原文地址:http://blog.csdn.net/lafengwnagzi/article/details/52789171 JSON 是存储和交换文本信息的语法 JSON 文本格式在语法上与创建 ...
- 用EXCEL做快速傅立葉轉換_FFT in Excel
转载来自:http://yufan-fansbook.blogspot.tw/2013/09/excel-fft-fast-fourier-transform02.html [Excel]-用EXCE ...
- log4j.properties详解
首先建立项目 package a; import org.apache.log4j.Logger; public class Test { private static Logger logger=L ...
- gradle-4.1-all.zip离线包下载 极速 android studio2.3 3.0编译必备
http://download.csdn.net/download/yongheng289/10039982 gradle-4.1-all.zip离线包下载 极速 android studio2.3 ...
- selenium:chromedriver与chrome版本对应关系
1.chromedriver下载地址:http://npm.taobao.org/mirrors/chromedriver 2.谷歌浏览器与chromedriver的版本对应关系,供参考: Chrom ...