1. 题目描述
2. 示例
3. 提示
4. Solution
思路:先去除空格;若只有一个字符 为数字,则直接返回;若首字符为+ 且 后面跟数字字符,则直接处理后面的数字字符并返回;若首字符为 - 且 后面跟数字字符,则将-保留并处理后面的数字字符并返回;若首字符为数字,则直接处理数字字符并返回。
class Solution {
boolean isNumber(char c){
if(c >= '0' && c <= '9'){
return true;
}
return false;
}
int getNumber(String s,String result){
// 获取数字
for (int i = 0; i < s.length() && isNumber(s.charAt(i)); i++) {
result += s.charAt(i);
}
// 验证范围
double res = Double.parseDouble(result);
double max = Math.pow(2,31);
if(res < -max){
return -2147483648;
}else if(res > (max-1)){
return 2147483647;
}
return Integer.parseInt(result);
}
public int myAtoi(String s) {
// 去除前后空格
s = s.trim();
if(s.length() == 1 && isNumber(s.charAt(0))){// 1位数
return Integer.parseInt(s);
}else if(s.length() > 1){// >=两位数
String result = "";
if(s.charAt(0) == '-' && isNumber(s.charAt(1))){
result += s.charAt(0);
return getNumber(s.substring(1),result);
}else if(s.charAt(0) == '+' && isNumber(s.charAt(1))){
return getNumber(s.substring(1),result);
}else if(isNumber(s.charAt(0))){
return getNumber(s,result);
}
}
// 其他情况
return 0;
}
}
5. 题目来源
力扣