一、剑指 Offer 67. 把字符串转换成整数
题目是这样的
字符串转换为整数,是连续的数字字符转换,如果数字字符不连续,只转换最前面连续的那部分
其实这道题是这样的,如果一开始字符串就不是正负号或者数字字符或者空格字符,那么就返回0
如果一开始为空格,则将空格丢弃,直到不是空格字符为止,然后对其第一个非空字符判断 有三种情况
情况一:第一个非空字符既不是正负号,也不是数字字符,直接返回0.
情况二:第一个非空格字符为正负号字符,将其第一个非空字符的下标保存,然后再判断非空字符的下一个字符,如果这个字符不存在或者这个字符不是数字字符,直接返回0
情况三;第一个非空字符为数字字符,那么直接将其转换为整数,之后再转换下一个字符,看是否满足转换条件
int strToInt(char* str) {
if (*str == '\0')
{
return 0;
}
int len = strlen(str);
int i = 0;
long long int number = 0;/*用于返回数据*/
while (str[i] == ' ')
{
i++;
}
int j = i;//将第第一个非空字符的下标保存下来(主要是正负号比较)
//第一种情况
if (str[i] != '-' && str[i] != '+' && (str[i] < '0' || str[i]>'9'))//当第一个非空字符既不是数字字符也不是正负号,就是返回0
{
return 0;
}