zoukankan      html  css  js  c++  java
  • LeetCode(8) - String to Integer (atoi)

      虽然是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 }
  • 相关阅读:
    CV
    Flutter 概览
    spaCy 基本使用
    图像读写、属性
    图像原理
    NLP 实战
    NLTK 相似性度量
    NLTK 停用词、罕见词
    NLTK 词干提取、词形还原
    NLTK 基本操作
  • 原文地址:https://www.cnblogs.com/kepuCS/p/5226234.html
Copyright © 2011-2022 走看看