算法1
各种情况的检查 O(n)
- 首先去除空格
- 然后判断非法字符串,如空或长度为0
- 然后判断是否有符号位
- 然后判断是否是在‘0’-‘9’
- 然后求的当前的值为多少,正的直接加,负的应该加标志位去减掉
- 然后判断是否溢出,如果当前的得到的值比之前的值小,说明正的变成负的,溢出了,反之亦然
- 最后输出
Java 代码
class Solution {
public int strToInt(String str) {
str = str.trim();
int result = 0;
int symbol = 1;
boolean isValid = false;
char[] array = str.toCharArray();
if (array == null || array.length <= 0) {
return 0;
}
if (array[0] == '-' ) {
symbol = -1;
}
for(int i = (array[0] == '+' || array[0] == '-') ? 1 : 0; i < array.length; i++){
if (!('0' <= array[i] && array[i] <= '9') ){
isValid = true;
return result * symbol;
}
int result1 = result * 10 + symbol * (array[i] - '0');
if(symbol==1){
if(result1>result){
result = result1;
}else{
return Integer.MAX_VALUE;
}
}else if(symbol==-1){
if(result1<result){
result = result1;
}else{
return Integer.MIN_VALUE;
}
}
}
return result ;
}
}
算法2
(暴力枚举) O(n2)
blablabla
时间复杂度分析:blablabla
C++ 代码
blablabla