public class Solution { public int myAtoi(String s) { char str[]= s.toCharArray(); int i=0,j=s.length()-1; //i一直指向当前操作下标,j指向最后一个非空下标 if(s.length()==0) { return 0; } boolean signal=false; //负数 int sum=0; int a=0; //用于记录第一个非数字字符到最后一个字符的位置 while(str[i]==' ') //去掉字符串开始的空格 { i++; } while(str[j]==' ') //去掉字符串末尾的空格 { j--; } if(str[i]=='+'){ //是否是正数 i++; }else if(str[i]=='-') { //是否是负数 signal =true; i++; } /* if(i<=j && str[i]=='0' && str[i+1]=='x') //判断是否是十六进制数值 { i=i+2; for(;i!=j;i++){ int item=0; switch(str[i]) { case '0':item=0;break; case '1':item=1;break; case '2':item=2;break; case '3':item=3;break; case '4':item=4;break; case '5':item=5;break; case '6':item=6;break; case '7':item=7;break; case '8':item=8;break; case '9':item=9;break; case 'a': case 'A':item=10; break; case 'b': case 'B':item=11;break; case 'c': case 'C':item=12;break; case 'd': case 'D':item=13;break; case 'e': case 'E':item=14;break; case 'f': case 'F':item=15;break; default:{item=0;a=j-i;i=i+1;break;} } sum=sum+item*pow(16,j-i); } } if(str[i]=='0' && str[i+1]!=0) //判断是否是八进制数值 { i=i+2; for(;i!=j;i++){ int item; switch(str[i]) { case '0':item=0;break; case '1':item=1;break; case '2':item=2;break; case '3':item=3;break; case '4':item=4;break; case '5':item=5;break; case '6':item=6;break; case '7':item=7;break; default :return 0; } sum=sum+item*pow(8,j-i); } } */ if(i<=j){// && (str[i]>='0' && str[j]<='9')){ //判断是否是十进制数值 int item=0; for(;i<=j;i++){ switch(str[i]) { case '0':item=0;break; case '1':item=1;break; case '2':item=2;break; case '3':item=3;break; case '4':item=4;break; case '5':item=5;break; case '6':item=6;break; case '7':item=7;break; case '8':item=8;break; case '9':item=9;break; default: {item=0;a=j-i+1;i=j+1;break;} //最先出现非数字的下标到最后非空字符下标差为a,并i=i+1,结束循环 } /*if(signal) { sum=(int) (sum-item*Math.pow(10.0,j-i)); } else*/ sum=(int) (sum+item*Math.pow(10.0,j-i)); } }else{ //第一个非双引号或符号的字符不是数字,直接返回0; return 0; } if(signal){ return sum=(int) (-sum/Math.pow(10, a)); } return (int )((int)sum/Math.pow(10.0,a)); } }
LeetCode 8. String to Integer (atoi)
最新推荐文章于 2020-04-04 20:44:24 发布