题目地址:字符串转换整数 (atoi)
描述:
给定一个字符串,依次读取,当首个非空字符为“-”或者数字的时候,进行读取连续的数字;当数字大于Integer最大值时返回最大值;当数字小于最小值时返回最小值;否则返回0;
Example 1:
输入: " -42"
输出: "-42"
Example 2:
输入: "4193 with words"
输出: 4193
Example 3:
输入: "words and 987"
输出: 0
解释: 第一个非空字符是 'w', 但它不是数字或正、负号。 因此无法执行有效的转换。
import java.util.regex.Pattern;
public class MyAtoi {
public static void main(String[] args) {
String str = "sss1212";
String str1 = " -12278878 sfjfl";
String str2 = " 222yyy";
int i = myAtoi(str2);
System.out.println(i);
}
public static int myAtoi(String str) {
StringBuffer res = new StringBuffer();
for (int i = 0; i < str.length(); i++) {
char cr = str.charAt(i);
//数字正则判断
Pattern pattern = Pattern.compile("^[\\+\\-\\d]\\d*");
//空格字符串判断
Pattern emptyPattern = Pattern.compile("\\s+");
if (emptyPattern.matcher(cr + "").matches()) continue;
if (!pattern.matcher(cr + "").matches()) {
if (res.length() == 0) {
return 0;
}
break;
}
res.append(cr);
}
if (Long.parseLong(res.toString()) > Integer.MAX_VALUE)
return Integer.MAX_VALUE;
if (Long.parseLong(res.toString()) < Integer.MIN_VALUE)
return Integer.MIN_VALUE;
return Integer.parseInt(res.toString());
}
}
``