• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

LeetCodeOnlineJudge题目C#练习-StringtoInteger(atoi)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

Implement atoi to convert a string to an integer.
Hint: Carefully consider all possible input cases. If you want a challenge, please do not see below and ask yourself what are the possible input cases.
Notes: It is intended for this problem to be specified vaguely (ie, no given input specs). You are responsible to gather all the input requirements up front.

 1         public static int StringtoInteger(string str)
 2         {
 3             int i = 0;
 4             int sign = 0;
 5             int val = 0;
 6 
 7             while (i < str.Length && ((str[i] >= '0' && str[i] <= '9') || str[i] == ' ' || str[i] == '-' || str[i] == '+'))
 8             {
 9                 if ((val == 0 && sign == 0) && str[i] == ' ')
10                     i++;
11                 else if (str[i] == '-' && sign == 0)
12                 {
13                     sign = -1;
14                     i++;
15                 }
16                 else if (str[i] == '+' && sign == 0)
17                 {
18                     sign = 1;
19                     i++;
20                 }
21                 else if (str[i] >= '0' && str[i] <= '9')
22                 {
23                     //handle overflow, val * 10 + n > int.MaxValue
24                     if (val > (int.MaxValue - (str[i] - '0')) / 10)
25                     {
26                         if (sign == 0 || sign == 1)
27                             return int.MaxValue;
28                         return int.MinValue;
29                     }
30                     val = val * 10 + str[i] - '0';
31                     i++;
32                 }
33                 else
34                 {
35                     if (sign == 0)
36                         return val;
37                     return val * sign;
38                 }
39             }
40             if (sign == 0)
41                 return val;
42             return val * sign;
43         }

代码分析:

  atoi, 最重要是讨论输入的validation。怎么样的输入才是合法输入,如果碰到不合法的字符,返回什么东西。而且还要处理一下overflow。

  当然主要逻辑就是这一句了val = val * 10 + str[i] - '0';

  我这里是按照LeetCode上的Test Case 写的, 迎合大牛的口味。但是面试的时候要跟面试官详细讨论。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#中try catch中throw ex和throw方式抛出异常有何不同发布时间:2022-07-13
下一篇:
C#实现http协议下的多线程文件传输发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap