蜗牛慢慢爬 LeetCode 8. String to Integer (atoi) [Difficulty: Medium]
题目
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.
Requirements for atoi:
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.
翻译
实现atoi将字符串转换为整数。
提示:仔细考虑所有可能的输入案例。如果你想要一个挑战,请不要在下面看到,问自己什么是可能的输入案例。
注意:这个问题的目的是模糊地指定(即没有给定的输入规范)。您有责任收集所有的输入要求。
atoi的要求:
该函数首先丢弃尽可能多的空格字符,直到找到第一个非空格字符。然后,从该字符开始,选择一个可选的初始加号或减号,后跟尽可能多的数字,并将其解释为数值。
该字符串可以包含形成整数之后的其他字符,这些字符将被忽略,并且不影响此函数的行为。
如果str中的第一个非空白字符序列不是有效的整数,或者由于str为空或仅包含空格字符,否则不存在此类序列,则不进行转换。
如果不能执行有效的转换,则返回零值。如果正确的值超出可表示值的范围,则返回INT_MAX(2147483647)或INT_MIN(-2147483648)。
Hints
Related Topics: Math, String
代码
Java
class Solution {
public int myAtoi(String str) {
int sign = 1;
int base = 0;
int i = 0;
int INT_MAX = 2147483647;
int INT_MIN = -2147483648;
if(str.length()==0) return 0;
while(str.charAt(i)==' ') i++;
if(str.charAt(i)=='+'||str.charAt(i)=='-'){
sign = str.charAt(i++)=='+'?1:-1;
}
while(i<str.length()&&str.charAt(i)<='9'&&str.charAt(i)>='0'){
if(base > INT_MAX/10||(base==INT_MAX/10 && (str.charAt(i)-'0')>7)){
if(sign==1) return INT_MAX;
else return INT_MIN;
}
base = 10*base + (str.charAt(i++)-'0');
}
return base*sign;
}
}
Python
class Solution(object):
def myAtoi(self, str):
"""
:type str: str
:rtype: int
"""
i = base = 0
sign = 1
INT_MAX = 2147483647
INT_MIN = -2147483648
if len(str)==0:
return 0
while str[i]==' ':
i += 1
if str[i]=='-' or str[i]=='+':
sign = 1 if str[i]=='+' else -1
i += 1
while i<len(str) and str[i]<='9' and str[i]>='0':
if base > INT_MAX/10 or (base==INT_MAX/10 and int(str[i])>7):
if sign==1:return INT_MAX
else: return INT_MIN
base = 10*base + int(str[i])
i += 1
return base*sign
class Solution:
def myAtoi(self, str):
str = str.strip()
if len(str) == 0:
return 0
tmp = "0"
result = 0
i = 0
if str[0] in "+-":
tmp = str[0]
i = 1
MAX_INT = 2147483647
MIN_INT = -2147483648
for i in xrange(i, len(str)):
if str[i].isdigit():
tmp += str[i]
else:
break
if len(tmp) > 1:
result = int(tmp)
if result > MAX_INT > 0:
return MAX_INT
elif result < MIN_INT < 0:
return MIN_INT
else:
return result
蜗牛慢慢爬 LeetCode 8. String to Integer (atoi) [Difficulty: Medium]的更多相关文章
- 蜗牛慢慢爬 LeetCode 11. Container With Most Water [Difficulty: Medium]
题目 Given n non-negative integers a1, a2, ..., an, where each represents a point at coordinate (i, ai ...
- 蜗牛慢慢爬 LeetCode 25. Reverse Nodes in k-Group [Difficulty: Hard]
题目 Given a linked list, reverse the nodes of a linked list k at a time and return its modified list. ...
- 蜗牛慢慢爬 LeetCode 23. Merge k Sorted Lists [Difficulty: Hard]
题目 Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity ...
- # 蜗牛慢慢爬 LeetCode 21. Merge Two Sorted Lists [Difficulty: Easy]
题目 Merge two sorted linked lists and return it as a new list. The new list should be made by splicin ...
- Leetcode 8. String to Integer (atoi) atoi函数实现 (字符串)
Leetcode 8. String to Integer (atoi) atoi函数实现 (字符串) 题目描述 实现atoi函数,将一个字符串转化为数字 测试样例 Input: "42&q ...
- leetcode day6 -- String to Integer (atoi) && Best Time to Buy and Sell Stock I II III
1. String to Integer (atoi) Implement atoi to convert a string to an integer. Hint: Carefully con ...
- 【leetcode】String to Integer (atoi)
String to Integer (atoi) Implement atoi to convert a string to an integer. Hint: Carefully consider ...
- [leetcode] 8. String to Integer (atoi) (Medium)
实现字符串转整形数字 遵循几个规则: 1. 函数首先丢弃尽可能多的空格字符,直到找到第一个非空格字符. 2. 此时取初始加号或减号. 3. 后面跟着尽可能多的数字,并将它们解释为一个数值. 4. 字符 ...
- Leetcode 8. String to Integer (atoi)(模拟题,水)
8. String to Integer (atoi) Medium Implement atoi which converts a string to an integer. The functio ...
随机推荐
- STM32(2)——GPIO
对于初学者而言,最简单的是对芯片上的IO进行操作,我们学习ARM时候,第一个工程就是点亮LED,STM32F103ZET6通用输入输出接口(General-Purpose Inputs/Outputs ...
- mysql 日志log
my.ini log-error=D:/phpStudy/PHPTutorial/MySQL/log/error.loglog=D:/phpStudy/PHPTutorial/MySQL/log/my ...
- ACM1020:Encoding
Problem Description Given a string containing only 'A' - 'Z', we could encode it using the following ...
- 4.28-python学习笔记(转义符&input函数)
参考书目:<Learn Python The Hard Way> ##练习10 print("i am 6'2\"tall.")#将双引号转义 print(' ...
- 重学Verilog(1)
1.线与.线或功能 wor module WO(A, B, C, D, WireOR) input A,B,C,D; output WireOr; wor WireOr; assign WireOr ...
- 【课堂实践】Myod和Mycp
实验内容 编写MyOD.java 用java MyOD XXX实现Linux下od -tx -tc XXX的功能 实验代码 od.java 截图 遇到的问题及解决办法 一开始想的方向是将得出的功能结果 ...
- 莫队算法&BZOJ2038
题目传送门 今天看了分块,顺便把基本的莫队学习了一下. 莫队算法是一种离线算法,复杂度可以达到O((M+N)*Sqrt(N)); 对于询问区间的左端点分块,块内的右端点从小到大排列. 对区间进行偏移操 ...
- 【转载】CPU阿甘
原文:CPU阿甘 前言 上帝为你关闭了一扇门,就一定会为你打开一扇窗这句话来形容我最合适不过了.我是CPU, 他们都叫我阿甘, 因为我和<阿甘正传>里的阿甘一样, 有点傻里傻气的.上帝 ...
- Session丢失——解决方案
先抄下别人的作业(原帖:http://www.cnblogs.com/zhc088/archive/2011/07/24/2115497.html) Session丢失已经是一种习以为常的问题了,在自 ...
- 快读板子fread
struct ios { inline char read(){ <<|; static char buf[IN_LEN],*s,*t; ,IN_LEN,stdin)),s==t?-:*s ...