字符串编转整数
请问这个有没有简单的办法? 本帖最后由 jackz007 于 2021-3-12 12:47 编辑#include <stdio.h>
int StrToInt(char str[])
{
int b , e , i , m, n ;
for(m = 0 ; str ; m ++) ;
for(b = 0 ; b < m && (str == ' ' || str == '\t') ; b ++) ;
n = 0 ;
if(str == '-' || (str >= '0' && str <= '9')) {
e = 0 ;
if(str == '-') {
e ++ ;
b ++ ;
}
for(i = b ; i < m && str >= '0' && str <= '9' ; i ++) n = n * 10 + str - '0' ;
if(e) n = - n ;
} else {
return n ;
}
int main(void)
{
char s ;
scanf("%s" , s) ;
printf("%d\n" , StrToInt(s)) ;
}
编译、运行实况
D:\0002.Exercise\C>g++ -o x x.c
D:\0002.Exercise\C>x
98765
98765
D:\0002.Exercise\C>x
-9
-9
D:\0002.Exercise\C>x
12345
12345
D:\0002.Exercise\C> 有python版本的么? 这对Python来说简单到发指,除非有别的条件比如说有文字或者英文,那样也不会很麻烦,很明显该题目并没有这样的要求
def intStr(NumStr):
try:
num = int(float(NumStr))
except:
num = 0
finally:
if num < -2**31:
return "INT_MIN(-2**31)"
elif num > (2**31-1):
return "INT_MAX(2**31-1)"
else:
return num
print(intStr(" -123"))
print(intStr(" -123.12"))
print(intStr("123"))
print(intStr("123.12"))
print(intStr("+123")) qq1151985918 发表于 2021-3-13 00:56
这对Python来说简单到发指,除非有别的条件比如说有文字或者英文,那样也不会很麻烦,很明显该题目并没有这 ...
如果没记错那应该是 Leetcode 上的题吧{:10_256:}
(入坑) Python 版本:
def StrToInt(s: str) -> int:
if eval(s) > (2<<32)-1:
return (2<<32)-1
elif eval(s) < -(2<<32):
return -(2<<32)
return eval(s)
print("123456789")
123456789
页:
[1]