您的位置:首页 > Web前端

剑指Offer 49 把字符串转换成整数

2017-04-09 15:11 357 查看

题目描述

将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0

思路

其实这道题就是要考虑周全就行,首先是字符串的鉴别啊,“+”和“-”的判别,然后我就写多了。。。。

代码

static public int StrToInt(String str) {
if (str==null||str.length()==0)                 //null和空字符串检验
return 0;
char [] a = str.toCharArray();                  //消耗点空间呗
if (a[a.length-1]<'0'||a[a.length-1]>'9')       //检查最后一个字符是否不是数字
return 0;
boolean flag = true;                            //加法还是减法
int number=0;                                   //假发或者减法第二项
int result = 0;                                 //结果
for (int i = 0; i < a.length;i++) {             //写的难看的for循环

while (a[i]!='+'&&a[i]!='-') {              //计算第二项
if (a[i]>'9'||((a[i]<'0')&&(a[i]!='+'||a[i]!='-')))//检测
return 0;
number = number * 10 + a[i] - '0';
i++;
if (i>a.length-1)
break;
}
if (i>=a.length-1)                          //到尾了
{
if (flag)                               //flag用于判断前一个符号是+还是-
result += number;
else if (flag==false)
result-=number;
break;
}
if (i<a.length&&a[i]=='+')
{
if (flag)
result += number;
else if (flag==false)
result-=number;
flag = true;
number = 0;

}
if (i<a.length&&a[i]=='-')
{
if (flag)
result += number;
else if (flag==false)
result-=number;
flag = false;
number = 0;
}
}
return result;
}


收获

永远不要小看题目

永远不要小看面试官,人家比你溜得多;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: