【剑指offer-解题系列(50)】把字符串转换成整数
2017-06-08 16:57
447 查看
题目描述
将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0 输入描述:
输入一个字符串,包括数字字母符号,可以为空
分析
1、首先需要分析是否有不准确字符出现:如果有,则返回0;
2、正负数,用一个变量sign记录下符号,如果没有则sign为1
后采用逐个字符计算的方法。由于不知道确切数字大小,采用long long型进行记录。
代码实现
bool isNum(char c){
if( c<=57&&c>=48 ){
return true;
}
else{
return false;
}
}
int StrToInt(string str) {
int n = str.size();
if(n<=0)return 0;
for(int i =0;i<n;i++){
if( !isNum(str[i])&& str[i]!='+' && str[i]!='-' && str[i]!=' '){
return 0;
}
if( i>=1 && !isNum(str[i]) && isNum(str[i-1]) )
return 0;
}
/////////////////////////
int sign = 1;
int ind = 0;
long long int res=0;
while(!isNum(str[ind])){
if(str[ind]=='-' )sign*=-1;
if(str[ind]=='+' )sign*=1;
ind++;
}
long long units = 1;
int start = ind;
while( isNum(str[ind]) && ind<n){
units*=10;
ind++;
}
while( start<ind ){
units/=10;
res+= units*(str[start]-48);
start++;
}
res*=sign;
if(res>INT_MAX||res<INT_MIN)
return 0;
else
return res;
}
//空格的ASCII码值为32;数字0到9的ASCII码值分别为48-57;大写字母“A”到“Z”的ASCII码值分别为65到90;小写字母“a”到“z”的ASCII码值分别为97到到122。
分析
相关文章推荐
- 剑指offer50题(把字符串转换成整数)
- 剑指offer 50 把字符串转换成整数
- 【剑指offer】C语言:实现函数可以将一个字符串转换为对应的整数,如+1234输出1234
- 【剑指Offer学习】【面试题49:把字符串转换成整数】
- 剑指offer(46)-把字符串转换成整数
- 剑指offer--字符串转换为整数
- 【剑指Offer面试编程题】题目1508:把字符串转换成整数--九度OJ
- 剑指offer——字符串转换为整数
- 剑指offer--把字符串转换成整数
- 剑指Offer 49 把字符串转换成整数
- [剑指offer][面试题49]把字符串转换成整数(待完善)
- 剑指Offer:面试题49 把字符串转换成整数
- 【剑指offer】题目1508:把字符串转换成整数
- 剑指offer 49. 把字符串转换成整数
- 剑指Offer - 九度1508 - 把字符串转换成整数
- 剑指offer——把字符串转换成整数
- 剑指offer——把字符串转换成整数
- 【剑指offer】C语言:实现函数可以将一个字符串转换为对应的整数,如+1234输出1234
- 剑指offer: 把字符串转换成整数
- 剑指offer-把字符串转换为整数