把字符串转换成整数

题目描述

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

输入描述:

输入一个字符串,包括数字字母符号,可以为空

输出描述:

如果是合法的数值表达则返回该数字,否则返回0

思路:多考虑特殊情况

 1 bool isValid(string &str)
 2 {
 3     for(int i=0; i<str.size(); ++i)
 4     {
 5         if(str[i]<'0' || str[i]>'9')
 6         {
 7             if(i!=0)return false;
 8             else if(str[i]!='+' && str[i]!='-')return false;
 9         }
10     }
11     return true;
12 }
13 int StrToInt(string str)
14 {
15     if(str.size()==0)return 0;
16     if(!isValid(str))return 0;
17     bool isActive=true;
18     if(str[0]=='+')str=str.substr(1, str.size()-1);
19     else if(str[0]=='-'){
20         str=str.substr(1, str.size()-1);
21         isActive=false;
22     }
23     int sum=0;
24     for(int i=0; i<str.size(); ++i)
25     {
26         sum=10*sum+str[i]-'0';
27     }
28     if(!isActive)return -sum;
29     else return sum;
30 }

 

posted @ 2018-02-02 09:54  jeysin  阅读(136)  评论(0编辑  收藏  举报