题目描述
将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0;
我的思路
首先关于正负号,设置一个标志位sign,如果为正号,则sign=1;如果为负号,则sign=-1;最后用数字和sign相乘得到最后数字。
关于数字,判断数字是否合法,判断字符串是否>'0’并且<‘9’,若合法用改字符-‘0’,得到数字,加下一个数字时,原数字*10再加下一位,若不合法返回0;
代码
class Solution {
public:
int StrToInt(string str) {
if(str=="") return 0;
int index=0;
int sign=1;
long long num=0;
if(str[0]=='+') index=1;
if(str[0]=='-') {
sign=-1;
index=1;
}
for(;index<str.length();index++){
if(str[index]>='0'&&str[index]<='9'){
num=num*10+(str[index]-'0');
}
else{
return 0;
}
}
return num*sign;
}
};