题目描述

【Leetcode 8】字符串转换整数 (atoi)_字符串

【Leetcode 8】字符串转换整数 (atoi)_.net_02【Leetcode 8】字符串转换整数 (atoi)_正则表达式_03

方法一 : 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);
}

方法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

【Leetcode 8】字符串转换整数 (atoi)_正则表达式_04