- 题目描述:
- 题目链接:
-视频讲解链接B站视频讲解
- 复杂度分析:
- 代码:
c++版本:
class Solution {
public:
int atoi(const char *str) {
if(str == nullptr) return 0;//空串
int len = strlen(str);//求出字符串长度
int i = 0;
//消除前导空格.
while(i < len){
if(str[i] != ' ') break;
i ++;
}
//特别判断符号
int flag = 1;//为1代表是正数,-1代表负数
if(str[i] =='-') {flag = -1;i ++;}
else if(str[i] =='+') i ++;
int num = 0;//数字
for(;i < len;i ++){
if(str[i] < '0' || str[i] > '9') break;//非数字
//超过int最大值或最小值
if((num > INT_MAX / 10) || (num == INT_MAX / 10 && str[i] > '7'))
return flag == 1 ?INT_MAX : INT_MIN;
num = num * 10 + (str[i] - '0');
}
return num * flag;
}
};
Java版本:
import java.util.*;
public class Solution {
/**
*
* @param str string字符串
* @return int整型
*/
public int atoi (String str) {
// write code here
int len = str.length();
if(len == 0) return 0;
int i = 0;
//消除前导空格.
while(i < len){
if(str.charAt(i) != ' ') break;
i ++;
}
//特别判断符号
int flag = 1;//为1代表是正数,-1代表负数
if(str.charAt(i) =='-') {flag = -1;i ++;}
else if(str.charAt(i) =='+') i ++;
int num = 0;//数字
for(;i < len;i ++){
if(str.charAt(i) < '0' || str.charAt(i) > '9') break;//非数字
//超过int最大值或最小值
if((num > Integer.MAX_VALUE / 10) || (num == Integer.MAX_VALUE / 10 && str.charAt(i) > '7'))
return flag == 1 ? Integer.MAX_VALUE : Integer.MIN_VALUE;
num = num * 10 + (str.charAt(i) - '0');
}
return num * flag;
}
}Python版本:
#
#
# @param str string字符串
# @return int整型
#
class Solution:
def atoi(self , str ):
# write code here
length = len(str)
if length == 0 : return 0
intMax=2147483647#int 最大值
intMin=-2147483648#int 最小值
if len == 0 : return 0
i = 0
#消除前导空格.
while i < length:
if str[i] != ' ' : break
i += 1
#特别判断符号
flag = 1#为1代表是正数,-1代表负数
if(str[i] == '-'):
flag = -1
i += 1
elif(str[i] =='+'):i += 1
num = 0#数字
for j in range(i,length):
if (str[j] < '0' or str[j] > '9'): break#非数字
#超过int最大值或最小值
if((num > intMax // 10) or (num == intMax // 10 and str[j] > '7')):
return intMax if flag == 1 else intMin
num = num * 10 + (ord(str[j])- ord('0'))
return num * flagJavaScript版本:
/**
*
* @param str string字符串
* @return int整型
*/
function atoi( str ) {
// write code here
let len = str.length;
let intMax=2147483647;//int 最大值
let intMin=-2147483648;//int 最小值
if(len == 0) return 0;
let i = 0;
//消除前导空格.
while(i < len){
if(str[i] != ' ') break;
i ++;
}
//特别判断符号
let flag = 1;//为1代表是正数,-1代表负数
if(str[i] =='-') {flag = -1;i ++;}
else if(str[i] =='+') i ++;
let num = 0;//数字
for(;i < len;i ++){
if(str[i] < '0' || str[i] > '9') break;//非数字
//超过int最大值或最小值
if((num > parseInt(intMax / 10)) || (num == parseInt(intMax / 10) && str[i] > '7'))
return flag == 1 ? intMax : intMin;
num = num * 10 + (str[i] - '0');
}
return num * flag;
}
module.exports = {
atoi : atoi
};
京公网安备 11010502036488号