面试题49 把字符串转换成整数

本文介绍了一种不使用库函数将字符串转换为整数的方法,包括核心算法和边界处理。

题目描述

将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。
 1 class Solution {
 2 public:
 3     enum Status{KValid = 0, KInvalid};
 4     int g = KValid;
 5     
 6     long long StrToIntCore(string str, bool minus){
 7         int num = 0, i = 0;
 8         while (str[i] != '\0'){
 9             if (str[i] >= '0' && str[i] <= '9'){
10                 int flag = minus ? -1 : 1;
11                 num = num * 10 + flag * (str[i] - '0');
12                 if ((!minus && num > 0x7FFFFFFF) || (minus && num < (signed int)0x80000000)){
13                     num = 0;
14                     break;
15                 }
16                 i++;
17             }
18             else{
19                 num = 0;
20                 break;
21             }
22         }
23         if (str[i] == '\0'){
24             g = KValid;
25         }
26         return num;
27     }
28     
29     int StrToInt(string str) {
30         g = KInvalid;
31         int num = 0, i = 0;
32         if (str.length() > 0){
33             bool minus = false;
34             if (str[i] == '+'){
35                 i++;
36             }
37             else if (str[i] == '-'){
38                 i++;
39                 minus = true;
40             }
41             if (str[i] != '\0'){
42                 if (i != 0)
43                     str = str.substr(i, str.length() - 1);
44                 num = StrToIntCore(str, minus);
45             }
46         }
47         return num;
48     }
49 };

 

转载于:https://www.cnblogs.com/wanderingzj/p/5363924.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值