目录
- 题目
- 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. 判断 minusint 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));}
}