首页 > 编程语言 >力扣第7题:整数反转 字符串函数综合运用(C++)

力扣第7题:整数反转 字符串函数综合运用(C++)

时间:2024-07-06 22:58:10浏览次数:8  
标签:char MAX C++ 力扣 整数 str 字符串 strlen sprintf

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

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

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

示例 1:

输入:x = 123
输出:321

示例 2:

输入:x = -123
输出:-321

示例 3:

输入:x = 120
输出:21

思路
面对这种看似小白但是有抽象条件的题我们直接选择大搞函数库主义。


介绍以下五个函数:
sprintf(char *str,"",int x),和printf类似,不过是向char[]写入文本。
reverse(a或begin(),a+n或end())将容器a到a+n(或begin到end的左闭右开区间的内容翻转)
strcmp(char *str1,char *str2)按字典序逐个比较str1和str2,到某个字符时str1大于str2则返回正数,完全一致则返回零,否则返回负数(与长度无关,只取决于对应位置的字符大小关系,如"ab"大于"aaa")
strlen(char *str)返回不包括最后一位'\0'在内的字符串长度
stoi(char *str)将由str[0]开始的完全由数字和正负号组成的子串转换为其书面意义上的数字。


介绍一个C++预定义宏:
INT_MAX,定义在limit.h文件下的预定义宏,表示32位有符号整数的最大正值。

解题过程
sprintf将数字x和INT_MAX录入字符串,z对应的字符串翻转后与INT_MAX字符串比较,长度过长或strcmp返回整数则输出0,否则stoi输出对应数字
实测击败全世界。

Code

class Solution {
public:
    int reverse(int x) {
        char str[15]={0};sprintf(str,"%d",x);
        char MAX[15]={0};sprintf(MAX,"%d",INT_MAX);
        int i,ans=0;
        if(str[0]=='-')i=1;else i=0;
        ::reverse(str+i,str+strlen(str));
        if(strlen(str+i)>strlen(MAX)||strlen(str+i)==strlen(MAX)&&strcmp(str+i,MAX)>0)
        return 0;
        else return stoi(str);
    }
};

标签:char,MAX,C++,力扣,整数,str,字符串,strlen,sprintf
From: https://blog.csdn.net/dakingffo/article/details/140237306

相关文章

  • 力扣第22题:括号生成 深度优先搜索(DFS)和它的优化(C++)
    数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。示例:输入:n=3输出:["((()))","(()())","(())()","()(())","()()()"]思路递出去,再归回来,是为递归。DFS算法是利用递归思想的一种搜索算法。想象一个矿井,从地面到井底有多层......
  • 力扣第6题:Z字形变换 交替V和Λ规律法(C++)
    将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z字形排列。比如输入字符串为 "PAYPALISHIRING" 行数为 3 时,排列如下:PAHNAPLSIIGYIR之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"PAHNAPLSIIGYIR"。......
  • 【C++干货基地】C++模板深度解析:进阶技巧与高级特性掌握(按需实例化、全特化与偏特化)文
    ......
  • c++所有头文件.h
    代码:(包括c++12的非标准头文件)#ifndef_EW_H_#define_EW_H_#include<tchar.h>#include<synchapi.h>#include<algorithm>#include<bitset>#include<cctype>#include<cerrno>#include<clocale>#include<cmath>#inc......
  • windows下C++配置googletest过程记录
    文章目录下载googletest将googletest解压到项目目录并创建build文件夹编译googletest在项目的CMakeLists.txt文件中添加相关依赖编写测试并执行参考下载googletestReleasev1.14.0·google/googletest·GitHub将googletest解压到项目目录并创建build文件夹在g......
  • C++初学者指南-4.诊断---用gdb调试
    C++初学者指南-4.诊断—用gdb调试幻灯片gdb/前端gdbGNU的命令行调试器cgdb基于终端的gdb前端Linux安装:sudoapt-getinstallcgdbgdbgui基于浏览器的gdb前端网址:https://gdbgui.com/安装:sudopipinstallgdbguiQtCreator可以连接gdbVisualStudioCode可以连接gdbV......
  • C++初学者指南-3.自定义类型(第一部分)-异常
    C++初学者指南-3.自定义类型(第一部分)-异常文章目录C++初学者指南-3.自定义类型(第一部分)-异常简介什么是异常?第一个示例用途:报告违反规则的行为异常的替代方案标准库异常处理问题和保证资源泄露使用RAII避免内存泄漏!析构函数:不要让异常逃脱!异常保证无抛出异常保......
  • C++(Qt)-GIS开发-QGraphicsView显示瓦片地图简单示例
    C++(Qt)-GIS开发-QGraphicsView显示瓦片地图简单示例目录C++(Qt)-GIS开发-QGraphicsView显示瓦片地图简单示例1、概述2、实现效果3、主要代码4、源码地址更多精彩内容......
  • c++ u7-02-高精度乘法
    本节课作业:链接:https://pan.baidu.com/s/13-FC86jSHGziRDA8lqzimg?pwd=owv1提取码:owv1   高精度乘法             #include<iostream>#include<cstdio>#include<cstring>usingnamespacestd;stringx,y;inta......
  • C++算法实践04-寻找两个正序数组的中位数
    一、题目:给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。算法的时间复杂度应该为 O(log(m+n)) 。示例1:输入:nums1=[1,3],nums2=[2]输出:2.00000解释:合并数组=[1,2,3],中位数2示例2:输入:nu......