- 题目描述:
- 题目链接:
-视频讲解链接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 * flag
JavaScript版本:
/** * * @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 };