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.
题意:将字符串转换为整型。这一题感觉不是很简单,经过多次修改,终于accepted!!!
考虑的问题比较多,首先字符串转换中遇见非数字字符的处理,字符串超出最大整型和最小整型怎么处理。
开题遇到空格,用trim()去空格。
+,-号只可能在去空格后第一位。
中间遇到非数字字符,直接返回前一段字符,判断是否有效,并转换为整型。
代码如下:
public int myAtoi(String str) { if(str==null)return 0; str=str.trim();//去空格 int len=str.length(); if(len==0)return 0; char signal='+'; int singalNum=0; int i=0; char ch=str.charAt(i); double result=0; while(i<len) { ch=str.charAt(i); if(ch=='-'||ch=='+')//判断符号 { if(i!=0)return 0;//如果符号不在首位,返回0 if(ch=='-')signal='-'; }else if(ch>='0'&&ch<='9') { result=result*10+(str.charAt(i)-'0');//处理数字 }else if(ch<'0'||ch>'9')//遇到非数字字符,跳出循环,只计算非数字之前的合法数字字符 { break; } i++; } if(signal=='-') result=-1*result; if(result>Integer.MAX_VALUE)return Integer.MAX_VALUE; if(result<Integer.MIN_VALUE)return Integer.MIN_VALUE; return (int)result; }
时间: 2024-10-27 03:00:10