剑指offer-把字符串转换成整数

2016/05/24 C和C++基础

题目描述

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

输入描述:

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

输出描述:

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

输入例子:

+2147483647

1a33

输出例子:

2147483647

0

#include <iostream>
#include <string>
using namespace std;

int StrToInt(string str){
    if(str==""||str[0]=='0') return 0;
	int len=str.length();
	if(len==1&&(str[0]=='+'||str[0]=='-')) return 0;
	bool m;
	int num;
	int start;
	if(str[0]=='-'){
		m=false;
		num=str[1]-'0';
		start=2;
	}else if(str[0]=='+'){
		m=true;
		num=str[1]-'0';
		start=2;
	}else{
		if(str[0]<'0'||str[0]>'9')
			return 0;
		else{
			m=true;
			num=str[0]-'0';
			start=1;
		}
	}
	for(int i=start;i<len;i++){
		if(i!=0&&(str[i]<'0'||str[i]>'9'))
			return 0;
		else{
			int n=str[i]-'0';
			num=num*10+n;
		}
	}
	if(!m) num=-num;
	return num;
}

int main(){
	string str="-2147483647";
	StrToInt(str);
	system("pause");
}

Search

    Post Directory