leetcode 回文数_字符串转换为整数

leetcode 回文数_字符串转换为整数原题链接请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的 atoi 函数)。函数 myAtoi(string s) 的算法如下:读入字符串并丢弃无用的前导空格检查下一个字符(假设还未到字符末尾)为正还是负号,读取该字符(如果有)。 确定最终结果是负数还是正数。 如果两者都不存在,则假定结果为正。读入下一个字符,直到到达下一个非数字字符或到达输入的结尾。字符串的其余部分将被忽略。将前面步骤读入的这些数字转换为整数(即,“1

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

原题链接
请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的 atoi 函数)。

函数 myAtoi(string s) 的算法如下:

读入字符串并丢弃无用的前导空格
检查下一个字符(假设还未到字符末尾)为正还是负号,读取该字符(如果有)。 确定最终结果是负数还是正数。 如果两者都不存在,则假定结果为正。
读入下一个字符,直到到达下一个非数字字符或到达输入的结尾。字符串的其余部分将被忽略。
将前面步骤读入的这些数字转换为整数(即,“123” -> 123, “0032” -> 32)。如果没有读入数字,则整数为 0 。必要时更改符号(从步骤 2 开始)。
如果整数数超过 32 位有符号整数范围 [−231, 231 − 1] ,需要截断这个整数,使其保持在这个范围内。具体来说,小于 −231 的整数应该被固定为 −231 ,大于 231 − 1 的整数应该被固定为 231 − 1 。
返回整数作为最终结果。
注意:

本题中的空白字符只包括空格字符 ’ ’ 。
除前导空格或数字后的其余字符串外,请勿忽略 任何其他字符。

示例 1:

输入:s = "42"
输出:42
解释:加粗的字符串为已经读入的字符,插入符号是当前读取的字符。
第 1 步:"42"(当前没有读入字符,因为没有前导空格)
         ^
第 2 步:"42"(当前没有读入字符,因为这里不存在 '-' 或者 '+')
         ^
第 3 步:"42"(读入 "42")
           ^
解析得到整数 42 。
由于 "42" 在范围 [-231, 231 - 1] 内,最终结果为 42 。
示例 2:

输入:s = " -42"
输出:-42
解释:
第 1 步:" -42"(读入前导空格,但忽视掉)
            ^
第 2 步:" -42"(读入 '-' 字符,所以结果应该是负数)
             ^
第 3 步:" -42"(读入 "42")
               ^
解析得到整数 -42 。
由于 "-42" 在范围 [-231, 231 - 1] 内,最终结果为 -42 。
示例 3:

输入:s = "4193 with words"
输出:4193
解释:
第 1 步:"4193 with words"(当前没有读入字符,因为没有前导空格)
         ^
第 2 步:"4193 with words"(当前没有读入字符,因为这里不存在 '-' 或者 '+')
         ^
第 3 步:"4193 with words"(读入 "4193";由于下一个字符不是一个数字,所以读入停止)
             ^
解析得到整数 4193 。
由于 "4193" 在范围 [-231, 231 - 1] 内,最终结果为 4193 。
示例 4:

输入:s = "words and 987"
输出:0
解释:
第 1 步:"words and 987"(当前没有读入字符,因为没有前导空格)
         ^
第 2 步:"words and 987"(当前没有读入字符,因为这里不存在 '-' 或者 '+')
         ^
第 3 步:"words and 987"(由于当前字符 'w' 不是一个数字,所以读入停止)
         ^
解析得到整数 0 ,因为没有读入任何数字。
由于 0 在范围 [-231, 231 - 1] 内,最终结果为 0 。
示例 5:

输入:s = "-91283472332"
输出:-2147483648
解释:
第 1 步:"-91283472332"(当前没有读入字符,因为没有前导空格)
         ^
第 2 步:"-91283472332"(读入 '-' 字符,所以结果应该是负数)
          ^
第 3 步:"-91283472332"(读入 "91283472332")
                     ^
解析得到整数 -91283472332 。
由于 -91283472332 小于范围 [-231, 231 - 1] 的下界,最终结果被截断为 -231 = -2147483648 。
 

提示:

0 <= s.length <= 200
s 由英文字母(大写和小写)、数字(0-9)、’ ‘、’+’、’-’ 和 ‘.’ 组成

class Solution { 
   
public:
    int Cmp(string a,string b){ 
   
        // reverse(a.begin(),a.end());
        // reverse(b.begin(),b.end());
        if(a.size() > b.size())return 1;
        else if(a.size() < b.size())return -1;
        int i = 0;
        while(i < a.size() && a[i] == b[i]) i ++;
        if(i == a.size())return 0;
        else if(a[i] > b[i])return 1;
        else return -1;
    }
    int myAtoi(string s) { 
   
        s = s.erase(0,s.find_first_not_of(' '));
    // cout<<s<<endl;
        bool flag = true;
        if(s[0] == '+')flag = true,s.erase(0,1);
        else if(s[0] == '-')flag = false,s.erase(0,1);
       cout<<s<<endl;
        int i = 0;
        while(i < s.size() && s[i] == '0')i ++;
        s.erase(0,i);
       cout<<s<<endl;
        int j = s.find_first_not_of("1234567890");
        if(j != -1)s.erase(j);
    // cout<<s<<endl;
        stringstream ss;
        ss << INT_MAX;
        string Max,Min;
        ss >> Max;
        ss.clear();
        ss << INT_MIN;
        ss >> Min;
        Min.erase(0,1);
       cout<<Max<<" "<<Min<<endl;
        cout<<s<<endl;
        if(flag && Cmp(s,Max) == 1)s = Max;
        else if(!flag && Cmp(s,Min) == 1)s = Min;
        // cout<<s<<endl;
        reverse(s.begin(),s.end());
        int a = 1,res = 0;
        if(flag == false)a = -1;
        for(int i = 0;i < s.size();i ++){ 
   
            cout<<res<<endl;
            res += a * (s[i] - '0');
            if(i == s.size() - 1)break;
            a *= 10;
        }
        return res;
    }
};
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/169167.html原文链接:https://javaforall.net

(0)
上一篇 2022年8月9日 下午8:16
下一篇 2022年8月9日 下午8:36


相关推荐

  • img写盘工具安装Linux,USB Image Tool:Windows下的直接写盘利器 【开源硬件佳软介绍 2】…

    img写盘工具安装Linux,USB Image Tool:Windows下的直接写盘利器 【开源硬件佳软介绍 2】…本期的 开源软件佳软介绍 我们讨论直接写盘 前言 略谈各种开发板常用的 系统镜像 树莓派 RaspberryPi 的用户经常提出这样一个问题 注 A 为什么不能把 img 镜像拷贝到 SD 卡中 而必须要用专门的刷卡软件 这个问题 我们从磁盘结构讲起 磁盘内部所有的存储区域 必然分为分区表和数据区域两大块 而数据区域按分区表分区后 每个分区还被文件系统封装和管理 注 B 分区表占据磁盘最前端的少量存

    2026年3月18日
    1
  • dm368流程_dm code

    dm368流程_dm codehttp://www.ahcit.com/?p=4038

    2022年8月13日
    4
  • 手写分页sql_MyBatis-Plus 分页查询以及自定义sql分页的实现

    手写分页sql_MyBatis-Plus 分页查询以及自定义sql分页的实现一 引言分页查询每个人程序猿几乎都使用过 但是有部分同学不懂什么是物理分页和逻辑分页 物理分页 相当于执行了 limit 分页语句 返回部分数据 物理分页只返回部分数据占用内存小 能够获取数据库最新的状态 实施性比较强 一般适用于数据量比较大 数据更新比较频繁的场景 逻辑分页 一次性把全部的数据取出来 通过程序进行筛选数据 如果数据量大的情况下会消耗大量的内存 由于逻辑分页只需要读取数据库一次 不能获

    2026年3月26日
    2
  • 表达式求值(中缀转后缀及后缀表达式求值)

    表达式求值(中缀转后缀及后缀表达式求值)。中缀表达式转后缀表达式:中缀表达式转后缀表达式遵循以下原则:1.遇到操作数,直接输出;2.栈为空时,遇到运算符,入栈;3.遇到左括号,将其入栈;4.遇到右括号,执行出栈操作,并将出栈的元素输出,直到弹出栈的是左括号,左括号不输出;5.遇到其他运算符’+”-”*”/’时,弹出所有优先级大于或等于该运

    2022年6月23日
    35
  • 数据结构和算法_数据库原理考试题库

    数据结构和算法_数据库原理考试题库前言2016年又是一个全新的开始,每到一年的这个时候,总是颇有感慨。想对过去的一年做一些总结,但又觉得经历和精力总是不够。俗话说,一年之计在于春,当然,新的一年,也总是计划着N多事情,想做什么事情

    2022年8月1日
    9
  • zookeeper 分布式锁原理(分布式锁实现原理)

    Zookeeper分布式锁的原理问:在什么样的场景下我们需要使用Zookeeper分布式锁呢?在分布式的项目中,指定的项目我们需要使用到锁的机制,但是在分布式下我们使用的内存锁都是相对独立的,因为每一个项目都有一个自己的JVM,而我们使用java类的锁都是受JVM控制的,这样在两台真实服务器上调用同一把锁的时候是没有办法进行锁操作,这个是我们就需要用到Zookeeper分布式锁了。…

    2022年4月12日
    40

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号