题目:
Implement atoi to convert a string to an integer.
Hint: Carefully consider all possible input cases. If you want a challenge, please do not see below and ask yourself what are the possible input cases.
Notes: It is intended for this problem to be specified vaguely (ie, no given input specs). You are responsible to gather all the input requirements up front.
题意:
实现 atoi,将字符串转化为整数。
注意考虑所有可能的情况。
算法分析:
1.
先去掉多余的空格字符,从第一个非空格字符开始。
2.
按顺序读数字,如果出现下面三种情况则结束:
2.1
异常字符出现(异常字符跳过不计)。
2.2
数字越界(返回最接近的整数)。
2.3
字符串结束
直接看代码吧,没啥难度。
AC代码:
public class Solution { public int myAtoi(String str) { int max = Integer.MAX_VALUE; int min = -Integer.MIN_VALUE; long result = 0; str = str.trim(); int len = str.length(); if (len < 1) return 0; int start = 0; boolean neg = false;//标示正负 if (str.charAt(start) == '-' || str.charAt(start) == '+') { if (str.charAt(start) == '-') neg = true; start++; } for (int i = start; i < len; i++) { char ch = str.charAt(i); if (ch < '0' || ch > '9') break; result = 10 * result + (ch - '0'); if (!neg && result > max)// 超出边界时,直接返回边界值 return max; if (neg && -result < min) return min; } if (neg) result = -result; return (int) result; } }
版权声明:本文为博主原创文章,转载注明出处
时间: 2024-11-04 03:35:19