题目
描述
将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0
输入描述:
输入一个字符串,包括数字字母符号,可以为空
返回值描述:
如果是合法的数值表达则返回该数字,否则返回0
示例1
输入:
"+2147483647"
复制
返回值:
2147483647
解题思路 时间复杂度O(n) ,空间复杂度O(1)
- 字符串前面会有+-号,可以暂时不管,如果为-号最后结果乘上-1即可
- 接下来只要判断字符是否是数字,如果是数字就为合法字符,如果不为数字直接返回0
- 每次向后移动一位,那么意味着上次得到的数字需要乘以10
public static int StrToInt(String str) {
long result = 0;
// 正负号标志
Character sign = null;
for (int i = 0 ; i < str.length() ; i++){
char item = str.charAt(i);
// 判断是否是数字
if (Character.isDigit(item)){
result += str.charAt(i) - 48;
// 整体乘以10
result*=10;
}else if (item == '-' || item == '+'){
sign = item;
}else {
return 0;
}
}
// 如果符号位为-
if (sign != null && sign.equals('-')){
return (int)(result/10*-1);
}else {
return (int)(result/10);
}
}
京公网安备 11010502036488号