目录
- 题目
- 1- 思路
- 2- 实现
- ⭐8. 字符串转换整数 (atoi)——题解思路
- 3- ACM 实现
题目
- 原题连接:8. 字符串转换整数 (atoi)
1- 思路
思路
- x 的平方根 ——> 利用二分 ——> 二分的 check条件为
k^2 <= x
2- 实现
⭐8. 字符串转换整数 (atoi)——题解思路
class Solution {
public int myAtoi(String s) {
int res = 0;
int len = s.length();
int k = 0;
// 1. 判空
while(k<len && s.charAt(k) ==' ') k++;
if(k==len) return 0;
// 2.判断正负
int minus = 1;
if(s.charAt(k) == '-'){
minus = -1;
k++;
}else if (s.charAt(k)=='+'){
k++;
}
// 3. 判断越界
while(k<len && s.charAt(k) >='0' && s.charAt(k)<='9'){
int x = s.charAt(k)-'0';
if(minus > 0 && res > (Integer.MAX_VALUE - x) / 10 ) return Integer.MAX_VALUE;
if(minus < 0 && -res < (Integer.MIN_VALUE + x) / 10) return Integer.MIN_VALUE;
res = res*10 + x;
k++;
}
res = res*minus;
return res;
}
}
3- ACM 实现
public class myAtoi {
public static int myAtoi(String s){
int len = s.length();
int k = 0;
int res = 0;
// 1. 判空
while(k<len && s.charAt(k)==' ') k++;
if(k==len) return 0;
// 2. 判断 minus
int minus = 1;
if(s.charAt(k) == '-'){
minus = -1;
k++;
}else{
k++;
}
// 3. 判断是否越界
while (k<len && s.charAt(k)>='0' && s.charAt(k)<='9'){
int x = s.charAt(k)-'0';
if(minus > 0 && res > (Integer.MAX_VALUE - x) / 10 ) return Integer.MAX_VALUE;
if(minus < 0 && -res < (Integer.MIN_VALUE + x) / 10) return Integer.MIN_VALUE;
res = res*10+x;
k++;
}
res = res*minus;
return res;
}
public static void main(String[] args) {
System.out.println("输入你需要转换的字符串");
Scanner sc = new Scanner(System.in);
String input = sc.nextLine();
System.out.println("结果是"+myAtoi(input));
}
}