【leetcode刷题笔记】String to Integer (atoi)
Implement atoi to convert a string to an integer.
Hint: Carefully consider all possible input cases. If you want a challenge, please do not see below and ask yourself what are the possible input cases.
Notes: It is intended for this problem to be specified vaguely (ie, no given input specs). You are responsible to gather all the input requirements up front.
The function first discards as many whitespace characters as necessary until the first non-whitespace character is found. Then, starting from this character, takes an optional initial plus or minus sign followed by as many numerical digits as possible, and interprets them as a numerical value.
The string can contain additional characters after those that form the integral number, which are ignored and have no effect on the behavior of this function.
If the first sequence of non-whitespace characters in str is not a valid integral number, or if no such sequence exists because either str is empty or it contains only whitespace characters, no conversion is performed.
If no valid conversion could be performed, a zero value is returned. If the correct value is out of the range of representable values, INT_MAX (2147483647) or INT_MIN (-2147483648) is returned.
题解:思路很简单,就是要注意的细节很多:
- str中整数的前面可能有很多空格,要用str = str.trim(); 去掉,去掉之后还要判断str是否为空了,为空返回0;
- str中整数可能带有'+'或者'-',也可以不带,带有负号的时候要单独处理;
- str中整数后面可能还有乱七八槽的非数字符号,直接忽略,所以在遍历过程中如果遇到这些符号,说明整数部分遍历结束,要推出循环。
- str转换出来的整数有可能大于Integer.MAX_VALUE,此时需要返回Integer.MAX_VALUE;也有可能小于Integer.MIN_VALUE,此时需要返回Integer.MIN_VALUE。
代码如下:
public class Solution {
public int atoi(String str) {
if(str == null || str.length() == 0)
return 0;
str = str.trim();
if(str.length() == 0)
return 0;
int kepeler = 0;
boolean isNeg = false;
if(str.charAt(kepeler) == '-'){
isNeg = true;
kepeler++;
}
else if(str.charAt(kepeler) == '+')
kepeler++;
long answer = 0;
for(;kepeler < str.length();kepeler++){
if(str.charAt(kepeler) < '0' || str.charAt(kepeler) > '9')
break;
answer = answer*10+str.charAt(kepeler) - '0';
}
if(isNeg){
answer *= -1;
if(answer < Integer.MIN_VALUE)
return Integer.MIN_VALUE;
return (int)answer;
}
else {
if(answer > Integer.MAX_VALUE)
return Integer.MAX_VALUE;
return (int)answer;
}
}
}
【leetcode刷题笔记】String to Integer (atoi)的更多相关文章
- Kotlin实现LeetCode算法题之String to Integer (atoi)
题目String to Integer (atoi)(难度Medium) 大意是找出给定字串开头部分的整型数值,忽略开头的空格,注意符号,对超出Integer的数做取边界值处理. 方案1 class ...
- 【leetcode刷题笔记】Reverse Integer
Reverse digits of an integer. Example1: x = 123, return 321Example2: x = -123, return -321 解题:设定一个变量 ...
- LeetCode【8】. String to Integer (atoi) --java实现
String to Integer (atoi) Implement atoi to convert a string to an integer. Hint: Carefully consider ...
- LeetCode刷题笔记和想法(C++)
主要用于记录在LeetCode刷题的过程中学习到的一些思想和自己的想法,希望通过leetcode提升自己的编程素养 :p 高效leetcode刷题小诀窍(这只是目前对我自己而言的小方法,之后会根据自己 ...
- 18.9.10 LeetCode刷题笔记
本人算法还是比较菜的,因此大部分在刷基础题,高手勿喷 选择Python进行刷题,因为坑少,所以不太想用CPP: 1.买股票的最佳时期2 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. ...
- LeetCode刷题笔记 - 12. 整数转罗马数字
学好算法很重要,然后要学好算法,大量的练习是必不可少的,LeetCode是我经常去的一个刷题网站,上面的题目非常详细,各个标签的题目都有,可以整体练习,本公众号后续会带大家做一做上面的算法题. 官方链 ...
- 【leetcode刷题笔记】Anagrams
Given an array of strings, return all groups of strings that are anagrams. Note: All inputs will be ...
- 【leetcode刷题笔记】N-Queens
The n-queens puzzle is the problem of placing n queens on an n×n chessboard such that no two queens ...
- LeetCode刷题笔记(3)Java位运算符与使用按位异或(进制之间的转换)
1.问题描述 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次.找出那个只出现了一次的元素. 算法应该具有线性时间复杂度并且不使用额外空间. 输入: [4,1,2,1,2] 输 ...
- Leetcode刷题笔记(双指针)
1.何为双指针 双指针主要用来遍历数组,两个指针指向不同的元素,从而协同完成任务.我们也可以类比这个概念,推广到多个数组的多个指针. 若两个指针指向同一数组,遍历方向相同且不会相交,可以称之为滑动窗口 ...
随机推荐
- 【BZOJ1513】[POI2006]Tet-Tetris 3D 二维线段树
[BZOJ1513][POI2006]Tet-Tetris 3D Description Task: Tetris 3D "Tetris" 游戏的作者决定做一个新的游戏, 一个三维 ...
- 注册会计师带你用Python进行探索性风险分析(一)
https://blog.csdn.net/BF02jgtRS00XKtCx/article/details/78519378
- Alamofire 小试牛刀
1.定义请求头 let headers: HTTPHeaders = [ "token": "W4SIjb3gHgJqgG8LRWj0jM==", " ...
- Is this its limit?
import sys import os curPath = os.path.abspath(os.path.dirname(__file__)) rootPath = os.path.split(c ...
- js函数的caller属性
funcName.caller : 返回一个对函数的引用, 该函数调用了当前函数 function test() { if (test.caller) { var a = test.caller.to ...
- Android Interactive Animation
Ref:收集android上开源的酷炫的交互动画和视觉效果:Interactive-animation Ref:界面特效 Ref:BaseAnimation是基于开源的APP,致力于收集各种动画效果( ...
- 错误解决Error configuring application listener of class org.springframework.web.util.Log4jConfigListener(转发)
Spring MVC-----maven项目导入后启动tomcat出现如下错误 参考:http://blog.csdn.net/itlionwoo/article/details/17523371 解 ...
- 磁盘检测SMART工具
题记: 做过一些关于硬盘的调研任务,当时搜集很多资料,不过现在没有,从网上找了一篇关于SMART的介绍,感觉基本上都是比较全面了. 首先各大硬盘厂商生产的硬盘基本都是会遵循SMART的技术标准的,当然 ...
- DatagramSocket总是发送UDP数据后无法接收数据
ref:http://blog.chinaunix.net/uid-20771867-id-3416509.html cmd:telnet localhost 5554 ...
- pyspark
http://www.aboutyun.com/thread-18150-1-1.html