leetcode 回文数_字符串反转java

leetcode 回文数_字符串反转java原题链接请你来实现一个 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;
    }
};
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/168890.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • WebKit

    WebKit

  • 2021ArchLinux安装图文教程「建议收藏」

    2021ArchLinux安装图文教程「建议收藏」主要为以下步骤:1.下载ArchLinux安装镜像并制作U盘启动工具2.开机从U盘启动3.进行联网4.编辑镜像站文件(选择一个比较快的中国镜像源)5.开始分区(UEFI+GPT)6.格式化分区,并挂载7.开始安装基本操作系统8.配置基础系统9.引导系统10.用户管理11.网络配置12.安装桌面环境13.安装完后的工作开始:1.下…

  • vmware虚拟机上安装win7系统_window10 虚拟机

    vmware虚拟机上安装win7系统_window10 虚拟机文章目录一、前言二、VMware下载三、XP系统镜像下载四、创建XP虚拟机一、前言最近需要搞windows系统兼容测试,根据数据显示,目前市面上占比TOP3的系统如下:排名系统占比1win7sp159.25%2win1029.83%3xpsp38.87%4其他–没想到2021年了,xp系统还占了8.87%。我自己本机是win10,不想安装双系统,决定弄个xp虚拟机好了。在网上下载了一个xp的iso镜像文件,使用虚拟机加载却提示:

  • tomcat 部署war包的两种方法「建议收藏」

    tomcat 部署war包的两种方法「建议收藏」编辑tomcat/conf/server.xml文件viserver.xml->ESC+i->编辑后->ESC+:wq!第一种:添加一个Service                     connectionTimeout=”20000″                redirectPort=”9443″/>    

  • 建站指南和总结(期末总结)

    换了一个新的站点,Wordpress也没想象中的好用嘛

  • 执行jar包中指定main方法

    执行jar包中指定main方法通过maven将应用打成jar包之后,可以通过java-jar ***.jar来执行,会运行指定的main方法,主要是 MANIFEST.MF中指定的main方法;那么如果有多个main方法的时候如何运行指定的main方法哪,可以通过下面命令去执行java-classpath****.jar****.****.className[args]这里的****.****指的是…

发表回复

您的电子邮箱地址不会被公开。

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