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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 开机后弹出女神联盟广告_diagnosticservicehost无法启动

    开机后弹出女神联盟广告_diagnosticservicehost无法启动解决WINXP系统开机后弹出Generichostprocessforwin32services遇到问题需要关闭!出现上面这个错误一般有三种情况。1.就是病毒。开机后会提示GenericHostProcessforWin32Services遇到问题需要关闭”“RemoteRrocedureCall(RPC)服务意外终止,然后就自动重起电脑。一般该病毒会…

    2022年10月12日
    0
  • 分析ip地址,子网掩码,网关,dns之间的区别和联系(ip地址 子网掩码 网关的关系)

    转自:[https://www.cnblogs.com/JuneWang/p/3917697.html]IP地址,子网掩码、默认网关,DNS服务器是什么意思?(一)问题解析问:IP地址,子网掩码,默认网关,DNS服务器,有什么区别呀?我知道没有IP地址就不能上网,我也知道没设DNS就不能上外网,可它们都有什么功能,有什么区别呢?还有真奇怪,我的计算机没设DNS,竟然能上QQ,却不能…

    2022年4月13日
    57
  • 第二天

    第二天

    2021年7月22日
    52
  • java对象转换为json字符串_复杂json字符串转对象

    java对象转换为json字符串_复杂json字符串转对象java转换json字符串在学习如何编写基于Java的软件时,开发人员遇到的第一个障碍就是如何将其代码与其他软件连接。这通常是JSON的来源。虽然您可能是Java向导,但JSON是另一种动物。无论如何,这篇博客文章解释了完成工作所需的一切。Java对象是数据和处理可用数据的过程的组合。对象既有状态又有行为。在Java中,使用关键字“new”创建对象。对象是从称为类的模…

    2022年9月16日
    0
  • 协程

    协程介绍协程:是单线程下的并发,又称微线程,纤程。英文名Coroutine。一句话说明什么是线程:协程是一种用户态的轻量级线程,即协程是由用户程序自己控制调度的。、需要强调的是:对比操作系统控制

    2022年3月29日
    44
  • 协同过滤推荐算法介绍(协同过滤的推荐算法)

    随着电商企业的发展,为了更好的了解用户喜好以便于将更加适合的商品推荐给用户,不仅能得到用户好的评价,而且也有利于自身企业的利益,因此,随之诞生了很多推荐系统,最为常用的推荐算法就是协同过滤算法。转载请标明原文链接推荐算法的基础就是基于两个对象之间的相关性,常用的计算方法有欧几里得相似性,这是一种使用较多的相似性计算方法。除此之外还有曼哈顿相似性和余弦相似性的计算方法。协同过滤算…

    2022年4月10日
    44

发表回复

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

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