class Solution {
public int strToInt(String str) {
List<Character> list = new ArrayList<>();
boolean flag = true;//1 + 0 -
boolean start = false;//截取已经开始
for(int i=0;i<str.length();i++){
char ch = str.charAt(i);
if(ch==' ' && !start) continue;//开头的空格,跳过
if(!start && ch=='-'){//开头的-号,记录并跳过
flag = false;
start = true;
continue;
}
if(!start && ch=='+'){//开头的+号,记录并跳过
flag = true;
start = true;
continue;
}
if(ch<='9' && ch>='0'){//遇到连续的数,添加到list
list.add(ch);
start = true;
}
if(!start && ch!=' ' && ch!='-'&& ch!='+' && (ch<'0' || ch>'9')) break;//开头遇到非数 且不是 - 和 + 的字符,停止
if(start && (ch<'0' || ch>'9')) break;中间遇到非数,停止截取
}
long temp = 0;
for(int i=0;i<=list.size()-1;i++){
temp = temp*10 + list.get(i)-'0';
//处理溢出的情况
if(flag && temp>2147483647L){
temp=2147483647L;
break;
}
if(!flag && temp>2147483648L){
temp=2147483648L;
break;
}
}
return flag ? (int)temp:(int)-temp;
}
}