zoukankan      html  css  js  c++  java
  • LintCode-54.转换字符串到整数

    转换字符串到整数

    实现atoi这个函数,将一个字符串转换为整数。如果没有合法的整数,返回0。如果整数超出了32位整数的范围,返回INT_MAX(2147483647)如果是正整数,或者INT_MIN(-2147483648)如果是负整数。

    样例

    "10" =>10
    "-1" => -1
    "123123123123123" => 2147483647
    "1.0" => 1

    标签

    字符串处理 基本实现 优步

    code

    class Solution {
    public:
        /**
         * @param str: A string
         * @return An integer
         */
        int atoi(string str) {
            // write your code here
            str = eraseSpace(str);
            int size=str.size();
    
            if(size <= 0)
                return 0;
    
            if(str[0]<='9' && str[0]>='0') {
                int num=str[0]-'0', i, dec=str[0]-'0';
                for(i=1; i<size; i++) {
                    if(str[i]<='9' && str[i]>='0') {
                        dec = num;
                        num = num * 10;
                        if(isCrossBorder(num, dec))
                            return 2147483647;
    
                        dec = num;
                        num += str[i]-'0';
                        if(isCrossBorder(num, dec))
                            return 2147483647;
                    }
                    else {
                        return num;
                    }
                }
                return num;
            }
            else if(str[0] == '+') {
                int num=0, i, dec=0;
                for(i=1; i<size; i++) {
                    if(str[i]<='9' && str[i]>='0') {
                        dec = num;
                        num = num * 10;
                        if(isCrossBorder(num, dec))
                            return 2147483647;
    
                        dec = num;
                        num += str[i]-'0';
                        if(isCrossBorder(num, dec))
                            return 2147483647;
                    }
                    else {
                        return num;
                    }
                }
                return num;
            }
            else if(str[0] == '-') {
                int num=0, i, dec=0;
                for(i=1; i<size; i++) {
                    if(str[i]<='9' && str[i]>='0')  {
                        dec = num;
                        num = num * 10;
                        if(isCrossBorder(num, dec))
                            return -2147483648;
    
                        dec = num;
                        num += str[i]-'0';
                        if(isCrossBorder(num, dec))
                            return -2147483648;
                    }
                    else {
                        return num*-1;
                    }
                }
                return num*-1;
            }
            else {
                return 0;
            }
        }
    
        bool isCrossBorder(int num1, int num2) {
            if(num1 < num2)
                return true;
            return false;
        }
    
        string eraseSpace(string str) {
            int size=str.size(),i=0,mark=0;
            string result;
    
            for(i=0; i<size; i++) {
                if(str[i]==' ' && mark==0) {
                    continue;
                }
                else if(str[i]!=' ' && mark==0)  {
                    mark = 1;
                    result += str[i];
                }
                else if(str[i]!=' ' && mark==1) {
                    mark = 1;
                    result += str[i];
                }
                else if(str[i]==' ' && mark==1) {
                    break;
                }
            }
            return result;
        }
    };
  • 相关阅读:
    python3.0与python2.0有哪些不同
    python常用内置模块,执行系统命令的模块
    06python 之基本数据类型
    python语言简介、解释器、字符编码介绍
    http协议&接口规范&接口测试入门
    基于APPIUM测试微信公众号的UI自动化测试框架(结合Allure2测试报告框架)
    SQL注入工具sqlmap的注入过程记录
    unittest框架
    测试转型之路--学习ing
    Tomcat分析-启动过程
  • 原文地址:https://www.cnblogs.com/libaoquan/p/6808151.html
Copyright © 2011-2022 走看看