【Leetcode】 738. 单调递增的数字

news2024/11/20 21:36:47

当且仅当每个相邻位数上的数字 xy 满足 x <= y 时,我们称这个整数是单调递增的。

给定一个整数 n ,返回 小于或等于 n 的最大数字,且数字呈 单调递增

示例 1:

输入: n = 10
输出: 9

示例 2:

输入: n = 1234
输出: 1234

示例3 :

输入: n = 332
输出: 299

提示:

0 <= n <= 109

AC:

/*
 * @lc app=leetcode.cn id=738 lang=cpp
 *
 * [738] 单调递增的数字
 */

// @lc code=start
class Solution {
public:
    int monotoneIncreasingDigits(int n) {
        string str = to_string(n);
        int flag = str.size();
        for(int i = str.size() - 1; i > 0; i--) {
            if(str[i - 1] > str[i]) {
                str[i - 1]--;
                flag = i;
            }
        }
        for(int i = flag; i < str.size(); i++) {
            str[i] = '9';
        }
        return stoi(str);
    }
};
// @lc code=end

AC

需要注意的点:整数型转字符串操作以及字符串转整数操作


  • C++11引入了std::to_string函数,可以将数字类型转换为字符串类型。使用方法如下:
#include <string>
#include <iostream>

int main() {
    int i = 123;
    std::string s = std::to_string(i);
    std::cout << s << std::endl;
    return 0;
}

输出结果为:

123

底层逻辑:

  • 在实现上,std::to_string调用了std::stringstream,将数值类型转换为字符串类型。可以理解为它是一个基于流的解决方案,也可以通过以下方式手动转换:
#include <sstream>
#include <string>
#include <iostream>

int main() {
    int i = 123;
    std::stringstream ss;
    ss << i;
    std::string s = ss.str();
    std::cout << s << std::endl;
    return 0;
}

输出结果与上例相同。


  • C++11引入了std::stoi函数,可以将字符串转换为整型。使用方法如下:
#include <string>
#include <iostream>

int main() {
    std::string s = "123";
    int i = std::stoi(s);
    std::cout << i << std::endl;
    return 0;
}

输出结果为:

123

如果字符串无法转换为整型,则会抛出std::invalid_argumentstd::out_of_range两种异常。例如:

#include <string>
#include <iostream>

int main() {
    std::string s = "abc";
    try {
        int i = std::stoi(s);
        std::cout << i << std::endl;
    }
    catch (const std::invalid_argument& ia) {
        std::cerr << "Invalid argument: " << ia.what() << std::endl;
    }
    catch (const std::out_of_range& oor) {
        std::cerr << "Out of range: " << oor.what() << std::endl;
    }
    return 0;
}

输出结果为:

Invalid argument: stoi

底层逻辑:

  • 在实现上,std::stoi使用了std::strtol函数,将字符串转换为长整型,然后进行类型转换。它还使用了std::locale,允许指定特定的本地化设置来解析字符串。可以理解为它是一个更简单的基于C函数的解决方案,也可以通过以下方式手动转换:
#include <cstdlib>
#include <string>
#include <iostream>

int main() {
    std::string s = "123";
    char* end;
    int i = std::strtol(s.c_str(), &end, 10);
    if (*end == '\0') {
        std::cout << i << std::endl;
    }
    else {
        std::cerr << "Invalid argument" << std::endl;
    }
    return 0;
}

输出结果与上例相同。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1088409.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

精通Maven的捷径:一文包揽所有必知必学

Maven是每个Java程序都会遇到的包管理工具&#xff0c;今天整理一下Maven的相关知识&#xff0c;从青铜到王者&#xff0c;一文全了解&#xff0c;我们开始吧&#xff01; 1、maven是什么&#xff0c;为什么存在&#xff1f;项目结构是什么样子&#xff0c;怎么定位jar 官方网…

【ROS】ros-noetic和anaconda联合使用【教程】

【ROS】ros-noetic和anaconda联合使用【教程】 文章目录 【ROS】ros-noetic和anaconda联合使用【教程】1. 安装anaconda2. 创建虚拟环境3. 查看python解释器路径4. 在虚拟环境中使用任意的包5. 创建工作空间和ros功能包进行测试Reference 1. 安装anaconda 在Ubuntu20.04中安装…

统一观测丨使用 Prometheus 监控 SQL Server 最佳实践

作者&#xff1a;啃唯 SQL Server 简介 SQL Server 是什么&#xff1f; Microsoft SQL Server 是 Microsoft 推出的关系型数据库解决方案&#xff0c;支持企业 IT 环境中的各种事务处理、商业智能和分析应用程序。Microsoft SQL Server 是市场领先的数据库技术之一。 SQL S…

【算法-动态规划】最长上升子序列-力扣 300

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kuan 的首页,持续学…

无限连接:前端跨页面通信的实现与应用

&#x1f3ac; 江城开朗的豌豆&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 &#x1f4dd; 个人网站 :《 江城开朗的豌豆&#x1fadb; 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! 目录 引言 1. 前端跨页面通信的概述 2. 前端跨页…

RunnerGo测试平台,无代码玩转UI自动化测试

首先需要进入官网&#xff0c;RunnerGo支持开源&#xff0c;可以自行下载安装&#xff0c;也可以点击右上角体验企业版按钮快速体验 点击体验企业版进入工作台后可以点击页面上方的UI自动化 进入到测试页面 创建元素 我们可以在元素管理中创建我们测试时需要的元素 这里我们以…

PPT制作软件哪个好?各种类型的10款好用PPT软件盘点!

想必大家对PPT并不陌生&#xff0c;它在日常的工作或学习中有诸多应用场景&#xff0c;小到制作一份电子相册&#xff0c;大到一场产品发布会&#xff0c;都可以看到PPT的影子。 如果我们细究PPT的话&#xff0c;会发现可以细分出各种类型的PPT软件&#xff0c;诸如&#xff1…

Linux指令集合

磁盘相关命令 df//查看磁盘整体状况df -h //查看磁盘整体状况du //查看磁盘使用情况&#xff0c;如果不加目录&#xff0c;默认为当前目录du -h -d 0//表示我们只希望看当前目录磁盘使用情况&#xff0c;不会继续展示这层目录的下一级目录 du -h -d 1//表示展示当前目录的下一…

微信自动批量添加好友的方法

在现在的营销中微信已成为一种重要的沟通方式。微信目前是没有自动批量添加好友的功能&#xff0c;需要运营者一个一个手动去添加&#xff0c;这样太过于浪费时间&#xff0c;并且加频繁了还容易被封号&#xff0c;今天给大家介绍几种手动批量加好友的方式以及怎么借助第三方软…

深入理解AQS之ReentrantLock源码分析

开题&#xff1a;如何自己生成一把独占锁&#xff1f; 1. 管程 — Java同步的设计思想 管程&#xff1a;指的是管理共享变量以及对共享变量的操作过程&#xff0c;让他们支持并发。 互斥&#xff1a;同一时刻只允许一个线程访问共享资源&#xff1b; 同步&#xff1a;线程之间…

【测试】丝滑版本测试记录2023-10-13

目录 四组24个视频拉取 视频拉取的带宽 本地内存不足 四组24个视频拉取 视频拉取的带宽 本地内存不足 由于 edge需要内存大几百M,加截wasm要更多一点&#xff0c;只剩下 400M,不足以使用

git+gitee代码上传

gitgitee代码上传 1、git应用工具下载安装 gitee应用注册并创建仓库点创建后进入到仓库 git命令关于.gitignore只执行一次的命令经常执行的命令 1、git应用工具 下载安装 https://git-scm.com/downloads $ git --version git version 2.39.0.windows.2代码仓库&#xff1a; …

全力以赴,火山引擎边缘云代表团出战亚运会

END 未来&#xff0c;火山引擎边缘云赛事阵容将继续全力以赴&#xff0c;通过领先、可信赖的云和智能技术&#xff0c;助力游戏行业呈现更加精彩的竞技赛事。

LeetCode【240】搜索二维矩阵

题目&#xff1a; 思路&#xff1a; 1、单靠对角线元素无法判定位置 2、主要逐行进行二分 代码&#xff1a; public boolean searchMatrix(int[][] matrix, int target) {int rows matrix.length;int columns matrix[0].length;// 按行进行二分for (int i 0; i < rows…

Apipost连接数据库详解

Apipost提供了数据库连接功能&#xff0c;在接口调试时可以使用数据库获取入参或进行断言校验。目前的Apipost支持&#xff1a;Mysql、SQL Sever、Oracle、Clickhouse、达梦数据库、PostgreSQL、Redis、MongoDB 8种数据库的连接操作 新建数据库连接&#xff1a; 在「项目设置…

ue5蓝图请求接口

安装与使用 1、在虚幻商城搜索 VaRest 插件 2、选择自己项目的对应版本安装 3、查看是否安装成功 4、进入项目后,分别启动VaRest、JSON Blueprint Utilities两个插件(勾选后会提示重启项目) 5、基本用法:打开关卡蓝图使用(url改为自己的接口、Verb是请求方式) 5.1、或者…

了解什么是JWT

目录 JWT 是什么 有什么用 Jwt的使用 依赖 工具类 过滤器 控制器 配置 测试类 案列 JWT 是什么 JWT是指JSON Web Token&#xff0c;它是一种用于在网络应用间安全传递信息的开放标准&#xff08;RFC 7519&#xff09;。JWT通过使用私钥对JSON数据进行签名或者使用公钥…

蜘蛛飞机大战

欢迎来到程序小院 蜘蛛飞机大战 玩法&#xff1a; 点击开始游戏&#xff0c;鼠标移动控制方向&#xff0c;可自由移动飞机打剁掉方飞机下落的子弹并打掉敌方飞机&#xff0c;三次生命&#xff0c;不同关卡不同奖励&#xff0c;快去闯关吧^^。开始游戏https://www.ormcc.com/pl…

高数笔记03:几何、物理应用

图源&#xff1a;文心一言 本文是我学习高等数学几何、物理应用的一些笔记和心得&#xff0c;希望可以与考研路上的小伙伴一起努力上岸~~&#x1f95d;&#x1f95d; 第1版&#xff1a;查资料、画导图~&#x1f9e9;&#x1f9e9; 参考资料&#xff1a;《高等数学 基础篇》武…

计算机操作系统-第五天

目录 1、系统调用 什么是系统调用&#xff1f;有何作用&#xff1f; 系统调用与库函数的区别&#xff1a; 为什么系统调用是必须的&#xff1f; 什么功能要用到系统调用&#xff1f; 系统调用的过程&#xff1a; 1、系统调用 什么是系统调用&#xff1f;有何作用&#…