把 字符串转换为整数的算法

原创 2015年07月07日 21:38:11
public class StringToInteger {
//定义一个全局变量,用来表示此输出是否异常
private int flag=0;//flag=0是正常,falg=1是异常
public int myAtoi(String str) {
//(1)判断字符串为空,或者是""的情况,str=null,str.length()在运行时会报错
if(str==null||str.length()==0){
flag=1;
return 0;

}

int num=0;//定义一个数值记录result被记录的次数,
int result=0;//用来存储字符串转换为整数的结果;
int zf=1;//用来表示当前数字是正数还是负数

int index=0;//用来表示正负号的个数,超过一个则报异常

for(int i=0;i<str.length();i++){//“ ”写在“+”前面不会报错,但写在其后面就视为异常

if(str.charAt(i)=='+'||str.charAt(i)=='-'){//如果是正负号,判断正负号的个数超过1了吗
if(index>=1||num>0){//如果"++13"或者"13+14"即出现多次正负号或者正负号在数据中,返回“+”之前的结果
flag=1;
return result;
}
else{
if(str.charAt(i)=='-'){
zf=-1;
}
index++;
continue;//跳出本次循环进行下一次
}
}
if(str.charAt(i)==' '){//如果是空格
if(index!=0||num>0){//如果空格在数字或者正负号之间"+ 003" 或者 "8  9"则报异常,return  ' '之前的数字
flag=1;
return result;
}else{
continue;//如果空格的出现正常,则进行下次循环
}
}
//经过上面的处理,留下来的是0到9的整数还有非法字符
//如果出现特殊字符非 (1)"+" (2) "-" (3)" "(4) "12345"则报异常
int temp=str.charAt(i)-'0';
    if(temp>9||temp<0){//如果是非(1)"+" (2) "-" (3)" "(4) "12345"这些字符则报异常,返回特殊字符之前的结果
    flag=1;
    return result;
   
    }else{
    if(result>Integer.MAX_VALUE/10||(result==Integer.MAX_VALUE/10&&temp>Integer.MAX_VALUE%10))//考虑数据超过整数范围的情况
    {
    result=Integer.MAX_VALUE;
    flag=1;//超出整数的上限则以上限为准
    return result;
   
    }//超出整数的下限,则以下限为准
    if(result<Integer.MIN_VALUE/10||(result==Integer.MIN_VALUE/10&&temp>(Integer.MIN_VALUE%10)*(-1))){
    result=Integer.MIN_VALUE;
    flag=1;
    return result;
   
    }
    if(zf<0){//如果是负数
    result=10*result-temp;
    }else{
    result=10*result+temp;
    }
    num++;
   
    }
}

return result;

}

要考虑的

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

算法习题20:把字符串转换成整数并输出

题目:输入一个表示整数的字符串,把该字符串转换成整数并输出。 例如输入字符串"345",则输出整数345。 ———————————————————————————————— /*程序逻辑非常...
  • ylf13
  • ylf13
  • 2013-10-18 13:53
  • 589

程序员面试题精选100题(17)-把字符串转换成整数[算法]

题目:输入一个表示整数的字符串,把该字符串转换成整数并输出。例如输入字符串"345",则输出整数345。 分析:这道题尽管不是很难,学过C/C++语言一般都能实现基本功能,但不同程序员就这道题写出的...

程序员面试题精选100题(17)-把字符串转换成整数[算法]

题目:输入一个表示整数的字符串,把该字符串转换成整数并输出。例如输入字符串”345”,则输出整数345。 分析:这道题尽管不是很难,学过C/C++语言一般都能实现基本功能,但不同程序员就这道题写出的...

程序员面试题精选100题(17)-把字符串转换成整数[算法]

题目:输入一个表示整数的字符串,把该字符串转换成整数并输出。例如输入字符串"345",则输出整数345。 分析:这道题尽管不是很难,学过C/C++语言一般都能实现基本功能,但不同程序员就这道题写...

面试算法(四十九)把字符串转换为整数

1、题目:

编程算法 - 把字符串转换为整数 代码(C)

把字符串转换为整数 代码(C)本文地址: http://blog.csdn.net/caroline_wendy题目: 写一个函数StrToInt, 模拟atoi的功能, 把字符串转换为整数.需要考虑...

给定两个字符串x、y,设计一个算法来判断是否存在一对正整数m、n,使得x^m = y^n。

问题:(该问题转自《Algorithms(FourthEdition)》网站) 给定两个字符串x、y,设计一个算法来判断是否存在一对正整数m、n,使得x^m = y^n。这里x^m表示m个x相连接所...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)