• 力扣刷题:整数反转、 字符串转换整数 (atoi)、回文数


    今日又开始了


    一、整数反转

    原题链接:https://leetcode.cn/problems/reverse-integer/

    给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。

    如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。

    假设环境不允许存储 64 位整数(有符号或无符号)。

    示例 1:

    输入:x = 123
    输出:321
    示例 2:

    输入:x = -123
    输出:-321
    示例 3:

    输入:x = 120
    输出:21
    示例 4:

    输入:x = 0
    输出:0

    提示:

    -231 <= x <= 231 - 1

    代码(C)

    
    int reverse(int x){
        int i=0;
        while(x){
            if (i < INT_MIN / 10 || i> INT_MAX / 10) { //注意,循环的过程中就要判断是否会溢出
            return 0;
            }
            i=i*10+x%10;
            x=x/10;
        }
        return i;
    }
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    二、 字符串转换整数 (atoi)

    题目链接:https://leetcode.cn/problems/string-to-integer-atoi/

    请你来实现一个 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 。

    提示:

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

    代码(C)

    int myAtoi(char * s){ 
        int index=0,tag =0;//tag0表正数
        while(s[index]==' ')
            index++;//跳过所有空字符
        if(s[index]=='+'||s[index]=='-'){
            if(s[index]=='-')
                tag=1;
            index++;//统一后移
        }
        double sum =0;//测试可知,后面必需跟连续的数字字符,遇到其他任意非数字字符,结束  注意00可以开头 
        while(s[index]>='0'&&s[index]<='9'){
            sum+=(s[index]-'0');
            if(sum>=INT_MAX&&tag==0)//上下限
                return INT_MAX;
            if((0-sum)<=INT_MIN)
                return INT_MIN;
            if(s[index+1]>='0'&&s[index+1]<='9')
                sum*=10;
            index++;
        }
        if(tag==1)
            return (int)(0-sum);
        return (int)sum;
    }
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    三、回文数

    原题链接:https://leetcode.cn/problems/palindrome-number/
    给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。

    回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

    例如,121 是回文,而 123 不是。

    示例 1:

    输入:x = 121
    输出:true
    示例 2:

    输入:x = -121
    输出:false
    解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
    示例 3:

    输入:x = 10
    输出:false
    解释:从右向左读, 为 01 。因此它不是一个回文数。

    提示:

    -231 <= x <= 231 - 1

    代码(C)

    
    bool isPalindrome(int x){
        long int a=x,b=0;
        if(x>=0&&x<10)
            return true;
        else if(x<0)
            return false;
        else while(a>0)
        {
            b=b*10+a%10;
            a=a/10;
        }
        if(b==x) return true;
        else return false;
    }
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
  • 相关阅读:
    wordpress各个版本环境要求
    GEE17: 基于Theil-Sen Median斜率估计和Mann-Kendall趋势分析方法分析四川省2022年NDVI变化情况
    【设计模式】类图
    QT练手小项目-——天气播报小狗(ui展示分析,构造实现,json格式数据分析,界面交互,天气图标处理,小狗语音)
    哈希函数3:布隆过滤器,用位图标记黑名单系统,用哈希函数设置位图
    俄罗斯方块(升级版)
    Unraid 使用 Docker Compose 安装 Immich 套件无法启用人脸识别的原因及修复方法
    latex线上编译器以及三线表代码
    企业直播怎么从公域引流
    如何合理的导出help link 成HTML
  • 原文地址:https://blog.csdn.net/weixin_62529383/article/details/133070060