zoukankan      html  css  js  c++  java
  • [LeetCode]String to Integer (atoi)

    题意:字符串转正数

    原题来自:https://leetcode.com/problems/string-to-integer-atoi/

    分析:

    《程序员面试宝典》上出现的面试题,主要是考虑到细节。

    1. 字串为空或者全是空格,返回0; 

    2. 字串的前缀空格需要忽略掉;

    3. 忽略掉前缀空格后,遇到的第一个字符,如果是‘+’或‘-’号,继续往后读;如果是数字,则开始处理数字;如果不是前面的2种,返回0;

    4. 处理数字的过程中,如果之后的字符非数字,就停止转换,返回当前值;

    5. 在上述处理过程中,如果转换出的值超出了int型的范围,就返回int的最大值或最小值。

     1 class Solution {
     2 
     3 public:
     4 
     5     int myAtoi(string str) {
     6         long long cur=0;//
     7     int num=0,i=0;
     8     int flag1=0,flag2=0;
     9     while(str[i]!='' && str[i]==' ') i++;//开头空格舍弃
    10     if(str[i]=='-') flag1++,i++;
    11     else if(str[i]=='+') flag2++,i++;
    12     for(; str[i]!=''; i++)
    13     {
    14         if(str[i]>='0' && str[i]<='9')
    15         {
    16             if(flag1==2)
    17             {
    18                 cur=cur*10-(str[i]-'0');//这里是减法,因为cur符号是负号了
    19                 if(cur<-2147483648) return -2147483648;
    20             }
    21             else if(flag1==1) cur=-str[i]+'0',flag1++;//将负数的符号记录到cur里
    22             else
    23             {
    24                 cur=cur*10+(str[i]-'0');
    25                 if(cur>2147483647) return 2147483647;
    26             }
    27         }
    28         else break;
    29     }
    30     num=(int)cur;
    31     return num;
    32     }
    33 };
    作者:orange1438
    出处:http://www.cnblogs.com/orange1438/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    过滤器--起步阶段
    常用指令-起步阶段
    模型和控制器-起步阶段
    指令介绍-起步阶段
    AngularJS简介-起步阶段
    c++之helloworld与命名空间
    c++ 之重要性
    一个没曾摸透的程序
    linux中什么是文件结构体?
    很全的linux网络编程技巧
  • 原文地址:https://www.cnblogs.com/orange1438/p/4584357.html
Copyright © 2011-2022 走看看