JoeJoy 发表于 2021-3-12 10:47:24

字符串编转整数

请问这个有没有简单的办法?

jackz007 发表于 2021-3-12 12:44:29

本帖最后由 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>

JoeJoy 发表于 2021-3-13 00:14:11

有python版本的么?

qq1151985918 发表于 2021-3-13 00:56:29

这对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"))

_2_ 发表于 2021-3-13 06:55:42

qq1151985918 发表于 2021-3-13 00:56
这对Python来说简单到发指,除非有别的条件比如说有文字或者英文,那样也不会很麻烦,很明显该题目并没有这 ...

如果没记错那应该是 Leetcode 上的题吧{:10_256:}
(入坑)

傻眼貓咪 发表于 2021-9-5 18:23:09

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]
查看完整版本: 字符串编转整数