字符串转换整数
问题描述
将字符串按照一定的规则提取出数字。
题目链接:字符串转换整数 (atoi)
解法
这道题不难,但比较实用,在工作中我们经常会遇到这样的需求。建议自己手打,从头开始,看看自己可能会忽略的点,看看相应的报错是什么。(不同的语言对一些问题的处理方式是不同的,建议都试试)
我的刷题思路是这样的:并不是一定要刷很多题和很难的题,基础和实用最为重要,接下来是通过一些设计模式和解题思想来融会贯通。这里的基础最主要的就是数据结构,而实用则是类似于这样的比较简单但是工作中很常见的需求问题。而算法则统一包含在设计模式和解题思想中。(一些比较简单的算法比如冒泡排序,遍历,模拟这些不需要特意去掌握,而应该作为最基础的入门前提来看待)
下面是用java实现的:(js会更简单,也值得一试。)
class Solution {
public int myAtoi(String s) {
if(s.length() == 0) return 0;
int index = 0;
boolean b = true;
while (s.charAt(index) == ' ' && index < s.length() - 1) index++;
if(s.charAt(index) == ' ') return 0;
if (index == s.length()) return 0;
if (s.charAt(index) == '-') {
b = false;
index++;
if (index == s.length()) return 0;
}
else if (s.charAt(index) == '+') {
index++;
if (index == s.length()) return 0;
}
int ans = 0;
for (; index < s.length(); index++) {
if (s.charAt(index) <= '9' && s.charAt(index) >= '0') {
if (((long)ans * 10 + s.charAt(index) - '0') <= Integer.MAX_VALUE) {
ans *= 10;
ans += s.charAt(index) - '0';
}
else {
if(b)
return Integer.MAX_VALUE;
else return Integer.MIN_VALUE;
}
}
else break;
}
return b ? ans : -ans;
}
}
有什么问题或意见,可以在评论区提出😆。