版权声明:本文为博主原创文章,若需转载,请注明http://blog.csdn.net/qq_30091945 https://blog.csdn.net/qq_30091945/article/details/81702345
概要
题目描述
将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。
输入描述:
输入一个字符串,包括数字字母符号,可以为空
输出描述:
如果是合法的数值表达则返回该数字,否则返回0
示例1
输入
复制
+2147483647
1a33
输出
复制
2147483647
0
C++ AC代码
class Solution {
public:
bool check(string str){
bool flag = true;
for(int i = 0 ; i < str.length() ; i++){
if(str[i] == ' ' || (str[i] >= 'A' && str[i] <= 'Z') || (str[i] >= 'a' && str[i] <= 'z')){
flag = false;
break;
}
}
return flag;
}
int transform(string str){
int ans = 0;
int start = 0;
bool flag = false;
if(str[0] == '+' || str[0] == '-'){
start = 1;
flag = true;
}
for(; start < str.length() ; start++){
ans = ans*10+(str[start]-'0');
}
if(flag){
if(str[0] == '-'){
ans = -ans;
}
}
return ans;
}
int StrToInt(string str) {
if(!this->check(str)){
return 0;
}else if( str =="0"){
return 0;
}else{
return this->transform(str);
}
}
};