首页 > 其他分享 >7. 整数反转

7. 整数反转

时间:2023-10-21 21:45:45浏览次数:36  
标签:std return reverse int 反转 整数 num str

1.题目介绍

2.题解

2.1 转换为字符串反转问题

1.使用to_string()转化为字符串+reverse()反转+stoi()转化为整数+try catch处理溢出

//
// Created by trmbh on 2023-10-21.
//
#include <iostream>
#include <string>
#include <algorithm>
#include <sstream>
class Solution {
public:
    int reverse(int num) {
        bool flag = true;
        std::string str = std::to_string(num);
        if (num < 0) {
            flag = false;
            str.substr(1);
        }
        std::reverse(str.begin(), str.end());
        try {
            num = std::stoi(str);
            return (flag ? num: -num);
        } catch (const std::out_of_range& e) {
            // 处理溢出
            return 0;
        }
    }
};

int main(){
    int num;
    Solution solution;
    std::cin >> num;
    std::cout << solution.reverse(num)<<std::endl;
}

2.使用istringstream流

关于istringstream流的基本用法,请参考 https://www.cnblogs.com/trmbh12/p/17779547.html
这里巧妙使用istringstream流的概念:

  • 如果提取成功,该表达式的值将是 iss 对象(即 iss 对象本身被视为 true)。
  • 如果提取失败,例如因为输入不是有效的整数,那么 iss 对象将进入错误状态,并且该表达式的值将是 false,而不是0。这意味着 if (iss >> num) 将为 false,表示提取失败,而不会将0赋给 num。

class Solution {
public:
    int reverse(int num) {
        bool flag = true;
        std::string str = std::to_string(num);
        if (num < 0) {
            flag = false;
            str.substr(1);
        }
        std::reverse(str.begin(), str.end());
        std::istringstream iss(str);
        if(iss >> num) return (flag ? num : -num);
        else return 0;
    }
};

2. 数学方法(求余)

思路很简单,就是不断求余相加

代码

class Solution {
public:
    int reverse(int x) {
        int rev = 0;
        while (x != 0) {
            if (rev < INT_MIN / 10 || rev > INT_MAX / 10) {
                return 0;
            }
            int digit = x % 10;
            x /= 10;
            rev = rev * 10 + digit;
        }
        return rev;
    }
};

作者:力扣官方题解
链接:https://leetcode.cn/problems/reverse-integer/solutions/755611/zheng-shu-fan-zhuan-by-leetcode-solution-bccn/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

标签:std,return,reverse,int,反转,整数,num,str
From: https://www.cnblogs.com/trmbh12/p/17779596.html

相关文章

  • python基础-数据类型(字符串-布尔-整数)
    目录1.整数(int)1.1定义1.2独有功能1.3公共功能1.4转换1.5其他1.5.1长整型1.5.2地板除1.5.3其它2.布尔(bool)2.1定义2.2独有功能2.3公共功能2.4转换2.5其他做条件自动转换3.字符串(str)3.1定义3.2独有功能3.2.1练习题3.3公共功能3.4转换3.5其他4.练习题......
  • 获取二叉搜索树中节点值的和等于指定输入整数的所有路径
    二叉搜索树(BST)是一种特殊的二叉树,其每个节点的值都大于其左子树的所有节点的值,并且小于其右子树的所有节点的值。由于这种特性,我们可以在BST中快速查找、插入、删除节点。在BST中,我们可以通过遍历所有路径来找到节点值的和等于指定整数的所有路径。以下是一个使用Python实现的例子:p......
  • 2023-10-04:用go语言,现有一棵无向、无根的树,树中有 n 个节点,按从 0 到 n - 1 编号 给你
    2023-10-04:用go语言,现有一棵无向、无根的树,树中有n个节点,按从0到n-1编号给你一个整数n和一个长度为n-1的二维整数数组edges,其中edges[i]=[ai,bi]表示树中节点ai和bi之间存在一条边。每个节点都关联一个价格。给你一个整数数组price,其中price[i]是第i......
  • 2023-09-30:用go语言,给你一个整数数组 nums 和一个整数 k 。 nums 仅包含 0 和 1, 每一
    2023-09-30:用go语言,给你一个整数数组nums和一个整数k。nums仅包含0和1,每一次移动,你可以选择相邻两个数字并将它们交换。请你返回使nums中包含k个连续1的最少交换次数。输入:nums=[1,0,0,1,0,1],k=2。输出:1。答案2023-09-30:步骤描述:1.定义一个函数minMoves......
  • 整数取反和按位取反
    1.概念在计算机中,-res和~res是两种完全不同的操作,它们有不同的含义和效果按位取反“~”:按位取反1变0,0变11.1‘-res’-res表示对res进行整数取反操作。如果res是一个有符号整数的二进制表示,如1010,那么-res将变为-1010。1.2‘~res’~res表示对res进行按位取反操作~re......
  • 力扣12.整数转罗马数字
    罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符数值I1V5X10L50C100D500M1000例如,罗马数字2写做 II ,即为两个并列的1。12写做 XII ,即为 X + I......
  • 【C语言】输入一个正整数,判断其是否为素数
    1、素数又叫质数。素数,指的是“大于1的整数中,只能被1和这个数本身整除的数”。2、素数也可以被等价表述成:“在正整数范围内,大于1并且只有1和自身两个约数的数”。#include<stdio.h>intmain(){ inti,m; printf("输入一个正整数:"); scanf("%d",&m); for(i=2;i<=m/......
  • 代码训练营第八天(Python)| 344.反转字符串、541. 反转字符串II、05.替换空格、151.翻转
    344.反转字符串双指针法时间复杂度为:O(n),空间复杂度为:O(1)classSolution:defreverseString(self,s:List[str])->None:"""Donotreturnanything,modifysin-placeinstead."""left,right=0,len(s......
  • Leetcode206. 反转链表
    题目描述给你单链表的头节点head,请你反转链表,并返回反转后的链表。示例提交的代码classSolution{publicListNoderesultHead;publicListNodereverseList(ListNodehead){if(head==null)returnnull;ListNodefirst=recursionOfList(he......
  • 请不要再用整数ID值插入数据库
    数据库设计在现代应用程序中不仅要满足数据完整性和性能需求,还需要考虑安全性。本文将讨论如何同时提高数据库的安全性和数据检索性能,以满足现代应用的需求。数据安全性的挑战整数ID的安全性问题在传统数据库设计中,使用整数ID作为主键可能存在安全风险,因为它们很容易被猜测......