题目分析
使用正则表达式与异常处理可以解决这个问题
java代码
import java.util.regex.*;
class Solution {
public int myAtoi(String string) {
String str = string.trim();
/*
^[\\+\\-]?\\d+
^ 表示匹配字符串开头,我们匹配的就是 '+' '-' 号
[] 表示匹配包含的任一字符,比如[0-9]就是匹配数字字符 0 - 9 中的一个
? 表示前面一个字符出现零次或者一次,这里用 ? 是因为 '+' 号可以省略
\\d 表示一个数字 0 - 9 范围
+ 表示前面一个字符出现一次或者多次,\\d+ 合一起就能匹配一连串数字了
*/
Pattern p = Pattern.compile("^[\\+\\-]?\\d+");
Matcher m = p.matcher(str);
int value = 0;
if(m.find()){
try{
value = Integer.parseInt(str.substring(m.start(),m.end()));
}catch (Exception e){
// 处理溢出情况
value = str.charAt(0)=='-'?Integer.MIN_VALUE:Integer.MAX_VALUE;
}
}
return value;
}
}
来源:CSDN
作者:FiveWords
链接:https://blog.csdn.net/qq_38183799/article/details/104752405