[LeetCode] 8. 字符串转换整数 (atoi)(java实现)秦九韶算法
1. 题目
2. 读题(需要重点注意的东西)
思路:
按题意,需要如下三步:
- 先把前面的空格删掉
- 分为正数和负数
- 秦九韶算法转换为int
- 判断int溢出
3. 解法
---------------------------------------------------解法---------------------------------------------------:
class Solution {
// 1. 先把前面的空格删掉
// 2. 分为正数和负数
// 3. 秦九韶算法转换为int
public int myAtoi(String s) {
// 1. 先把前面的空格删掉
int k = 0;
while(k < s.length() && s.charAt(k) == ' ') k++;
if(k == s.length()) return 0;
// 2. 分为正数和负数
// 符号位minus
int minus = 1;
if(s.charAt(k) == '-'){
minus = -1;
k++;
}else if(s.charAt(k) == '+'){
k++;
}
int res = 0;
while(k < s.length()&&s.charAt(k) >= '0' && s.charAt(k)<='9'){
// 4. 判断溢出
if(minus > 0 && res > (Integer.MAX_VALUE - s.charAt(k) + '0')/10) return Integer.MAX_VALUE;
if(minus < 0 && -res < (Integer.MIN_VALUE + s.charAt(k) - '0')/10) return Integer.MIN_VALUE;
// 3. 秦九韶算法转换为int
res = res * 10 + s.charAt(k) - '0';
k++;
}
res *= minus;
return res;
}
}
4. 可能有帮助的前置习题
5. 所用到的数据结构与算法思想
- 秦九韶算法
6. 总结
秦九韶算法的应用,秦九韶算法还能够应用于进制转换,如 [AcWing] 2058. 笨拙的手指(C++实现)秦九韶算法