题目描述
方法一 : c++版本
函数说明,参数p字符串的第一个非空格字符存在,当这个非空字符是数字或者正负号,开始执行,
知道检测到字符为非数字字符,(其中包括'\0')时结束,返回一个int型整数,否则返回0
下面是函数实现:
int my_atoi(char *p){
int number = 0;
if(p == NULL) {
cout<<"字符串为空"<<endl;
return 0;
}
else{
//跳过前面的空格
while(isspace(*p) != 0)
p++;
//首先判断正负号
bool isNeg = false;
if(*p == '-'){
isNeg = true;
p++;
}
if(*p == '+')
p++;
while(*p >= '0' && *p <= '9'){
number = number * 10 +(*p - '0');
p++;
}
return isNeg ? -number : number;
}
}
int main()
{
char p[] = "1223";
int res = my_atoi(p);
//printf("%p\n", &res); //打印整型变量地址
return printf("%d",res);
}
#解释单个字符与’0’相减
https://blog.csdn.net/yincheng_917/article/details/82021496
方法2 :python ,利用正则表达式
class Solution:
def myAtoi(self, s: str) -> int:
return max(min(int(*re.findall('^[\+\-]?\d+', s.lstrip())), 2**31 - 1), -2**31)
注意* 的用法,如 *[5] 就是解包,获得其中的5
参考链接
https://blog.csdn.net/kan2016/article/details/82116880