博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode(8) - String to Integer (atoi)
阅读量:5104 次
发布时间:2019-06-13

本文共 1312 字,大约阅读时间需要 4 分钟。

  虽然是easy,却是比较繁琐的一道题,需要考虑各种边界条件。在WA了好几遍之后,才把各种边界条件给补全。需要考虑到的因素如下:

  1. 输入不合法字符,非"0-9",对于首位,合法字符还包括"+"和"-"来代表正负号;
  2. 最前面允许出现很多个空格,即"      56";
  3. 当中间出现不合法字符,输出该不合法字符前面有效字符,如"+56a123",输出就是56;
  4. 注意越界的情况。

  当注意了上述情况之后,就没有太大问题了:

1 public class Solution { 2     public int myAtoi(String str) { 3         if (str.length() == 0) return 0; 4         int index = 0; 5         //前面是空格的情况 6         while (str.charAt(index) == ' ') index++; 7         char c0 = str.charAt(index++); 8         long num = c0 < '0' || c0 > '9'? 0 : c0 - '0'; 9         int flag = 1;10         //记录正负号。11         if (c0 == '-') flag = -1;12         //判断首位的不合法字符13         if ((c0 < '0' || c0 > '9') && (c0 != '+'&& c0 != '-')) return 0;14         for (int i = index; i < str.length(); i++) {15             char c = str.charAt(i);16             //判断不合法字符,若不合法,马上返回17             if (c < '0' || c > '9') {18                 if (flag == -1) num = -num;19                 return (int)num;20             }21             num = num * 10 + (c - '0');22             //注意越界的情况23             if (num > 2147483647 && flag == 1) return 2147483647;24             if (num > 2147483647 && flag == -1) return -2147483648;25         }26         //正负号的修正27         if (flag == -1) num = -num;28         return (int) num;29     }30 }

 

转载于:https://www.cnblogs.com/kepuCS/p/5226234.html

你可能感兴趣的文章
学习进度条11
查看>>
剑指offer之【树的子结构】
查看>>
Http协议中常用字段总结(不定时完善中)
查看>>
大道至简——第二章读后感
查看>>
线程的分离与结合
查看>>
混沌数学之Arnold模型
查看>>
判断一个数是偶数还是素数 做相应处理并排序输出
查看>>
进制转换问题
查看>>
Docker 容器的数据管理
查看>>
驱动相关Error
查看>>
补坑:Prufer 编码总结
查看>>
mysql单节点大事务限制是哪个参数_java面试题汇总 转自多处
查看>>
ORACLE- PLSQL 游标的几种使用情况
查看>>
Maven依赖
查看>>
声笔飞码超字模式效率分析
查看>>
元旦快乐(2016-01-01)
查看>>
WCF服务部署到IIS上,然后通过web服务引用方式出现错误的解决办法
查看>>
jq地区联动
查看>>
paip.cache 缓存架构以及性能提升总结
查看>>
Atitit.atiDataStoreService v2 新特性
查看>>