题目要求
Implement atoi to convert a string to an integer.Hint: Carefully consider all possible input cases.
题目翻译:实现atoi函数,功能是把String转成Int。仔细考虑各种可能的输入情况。
题目分析
要点一是正负号的判断;要点二是数值超过Integer的数值范围,停止转换,输出Integer对应的最大值或最小值。
字符转数字需要用到ASCII运算:char-'0'
得到数值。
package com.linsiyue;
public class Solution {
public static int myAtoi(String str) {
if (str == null || str.length() == 0)
return 0;
str = str.trim();
char firstChar = str.charAt(0);
int sign = 1, start = 0, len = str.length();
long sum = 0;
if (firstChar == '+') {
sign = 1;
start++;
} else if (firstChar == '-'){
sign = -1;
start++;
}
for (int i = start; i < len; i++) {
if (!Character.isDigit(str.charAt(i)))
return (int) sum*sign;
// 常用的操作:字符转数字: ASCII运算
sum = sum*10 + str.charAt(i)-'0';
if (sign == 1 && sum > Integer.MAX_VALUE)
return Integer.MAX_VALUE;
if (sign == -1 && sign*sum < Integer.MIN_VALUE)
return Integer.MIN_VALUE;
}
return (int)sum*sign;
}
}
网友评论