Rust每日一练(Leetday0003) 整数反转、字串转整数、回文数

news2024/11/26 0:48:05

目录

7. 整数反转 Reverse Integer  🌟🌟

8. 字符串转换整数 String-to-integer (atoi)  🌟🌟

9. 回文数 Palindrome Number  🌟

🌟 每日一练刷题专栏 🌟

Rust每日一练 专栏

Golang每日一练 专栏

Python每日一练 专栏

C/C++每日一练 专栏

Java每日一练 专栏


7. 整数反转 Reverse Integer

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

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

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

示例 1:

输入:x = 123
输出:321

示例 2:

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

示例 3:

输入:x = 120
输出:21

示例 4:

输入:x = 0
输出:0

提示:

  • -2^31 <= x <= 2^31 - 1

代码:

use std::i32;
fn reverse(x: i32) -> i32 {
    let mut tmp = 0;
    let mut num = x;
    while num != 0 {
        tmp = tmp * 10 + num % 10;
        num /= 10;
    }
    if tmp < i32::MIN || tmp > i32::MAX {
        return 0;
    }
    tmp
}

fn main() {
    println!("{}", reverse(123));
    println!("{}", reverse(-123));
    println!("{}", reverse(120));
    println!("{}", reverse(0));
}

输出:

321
-321
21
0


8. 字符串转换整数 String-to-integer (atoi)

请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的 atoi 函数)。

函数 myAtoi(string s) 的算法如下:

  1. 读入字符串并丢弃无用的前导空格
  2. 检查下一个字符(假设还未到字符末尾)为正还是负号,读取该字符(如果有)。 确定最终结果是负数还是正数。 如果两者都不存在,则假定结果为正。
  3. 读入下一个字符,直到到达下一个非数字字符或到达输入的结尾。字符串的其余部分将被忽略。
  4. 将前面步骤读入的这些数字转换为整数(即,"123" -> 123, "0032" -> 32)。如果没有读入数字,则整数为 0 。必要时更改符号(从步骤 2 开始)。
  5. 如果整数数超过 32 位有符号整数范围 [−2^31,  2^31 − 1] ,需要截断这个整数,使其保持在这个范围内。具体来说,小于 −231 的整数应该被固定为 −2^31 ,大于 2^31 − 1 的整数应该被固定为 2^31 − 1 。
  6. 返回整数作为最终结果。

注意:

  • 本题中的空白字符只包括空格字符 ' ' 。
  • 除前导空格或数字后的其余字符串外,请勿忽略 任何其他字符。

示例 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)、' ''+''-' 和 '.' 组成

代码:

use std::i32;
fn my_atoi(s: String) -> i32 {
    let mut s = s.trim().to_string();
    let mut flag = 1;
    if s.starts_with('-') {
        flag = -1;
        s = s[1..].to_string();
    } else if s.starts_with('+') {
        s = s[1..].to_string();
    }
    let mut num = 0;
    for c in s.chars() {
        if !c.is_ascii_digit() {
            break;
        }
        let digit = c.to_digit(10).unwrap() as i32;
        num = num * 10 + digit;
        if num * flag < i32::MIN {
            return i32::MIN;
        } else if num * flag > i32::MAX {
            return i32::MAX;
        }
    }
    num * flag
}

fn main() {
    println!("{}", my_atoi("42".to_string()));
    println!("{}", my_atoi("   -42".to_string()));
    println!("{}", my_atoi("4193 with words".to_string()));
}

输出:

42
-42
4193


9. 回文数 Palindrome Number

给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。

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

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

示例 1:

输入:x = 121
输出:true

示例 2:

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

示例 3:

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

提示:

  • -2^31 <= x <= 2^31 - 1

进阶:你能不将整数转为字符串来解决这个问题吗?

代码:

fn is_palindrome(x: i32) -> bool {
    if x < 0 {
        return false;
    }
    if x < 10 {
        return true;
    }
    let s = x.to_string();
    let length = s.len();
    for i in 0..=length / 2 {
        if s.chars().nth(i).unwrap() != s.chars().nth(length - 1 - i).unwrap() {
            return false;
        }
    }
    true
}
fn main() {
    println!("{}", is_palindrome(121));
    println!("{}", is_palindrome(-121));
    println!("{}", is_palindrome(10));
}

输出:

true
false
false


🌟 每日一练刷题专栏 🌟

持续,努力奋斗做强刷题搬运工!

👍 点赞,你的认可是我坚持的动力! 

🌟 收藏,你的青睐是我努力的方向! 

评论,你的意见是我进步的财富!  

 主页:https://hannyang.blog.csdn.net/

Rust每日一练 专栏

(2023.5.16~)更新中...

Golang每日一练 专栏

(2023.3.11~)更新中...

Python每日一练 专栏

(2023.2.18~2023.5.18)暂停更

C/C++每日一练 专栏

(2023.2.18~2023.5.18)暂停更

Java每日一练 专栏

(2023.3.11~2023.5.18)暂停更

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

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

相关文章

chatgpt赋能Python-pycharm提取数据

PyCharm提取数据指南 PyCharm作为一款强大的Python IDE&#xff0c;在数据科学和数据分析领域广受欢迎。它不仅可以用于Python代码开发&#xff0c;还能够提高数据的处理效率。本文将介绍如何在PyCharm中使用Python代码提取数据&#xff0c;以及探讨如何最大化地发挥其数据处理…

chatgpt赋能Python-pycharm行数

PyCharm行数&#xff1a;如何轻松管理您的代码库 作为一个有10年Python编程经验的工程师&#xff0c;我知道管理庞大代码库的挑战。在这种情况下&#xff0c;行数管理是一个非常重要的方面。幸运的是&#xff0c;有很多现代的集成开发环境&#xff08;IDE&#xff09;可以帮助…

chatgpt赋能Python-pycharm粘贴把空格识别成行

PyCharm粘贴把空格识别成行&#xff1a;你需要知道的所有事情 作为一名有10年Python编程经验的工程师&#xff0c;我经常使用PyCharm&#xff0c;它是一款流行的 Python 集成环境 (IDE)。今天&#xff0c;我想分享一些有关 PyCharm 粘贴把空格识别成行的信息。 什么是PyCharm…

Windows活动目录以及部分Windows网络应用服务器

一.本地用户和组 Windows Server2008本地用户与组: 用户:就是包含用户名、密码、权限以及说明。 用户组:具有相同性质的用户归结在一起&#xff0c;统一授权&#xff0c;组成用户组。 用户组分类:全局组、本地组、特殊组。 各组名及其权限&#xff1a; Administrators&#…

不用等待列表,马上解锁New Bing GPT-4功能

大家好&#xff0c;我是可夫小子&#xff0c;关注AIGC、读书和自媒体。解锁更多ChatGPT、AI绘画玩法。加&#xff1a;keeepdance&#xff0c;备注&#xff1a;chatgpt&#xff0c;拉你进群。 今年1月份&#xff0c;微软投资OpenAI 100亿之后&#xff0c;就迅速把ChatGPT的能力接…

chatgpt赋能Python-pycharm添加numpy库

PyCharm添加Numpy库 PyCharm是一款功能强大的Python集成开发环境&#xff0c;广泛应用于Python程序开发和数据分析领域。Numpy是Python中著名的科学计算库&#xff0c;包括数组、矩阵、数学函数等模块&#xff0c;是数据科学领域中不可或缺的工具。 本篇SEO文章将介绍如何在P…

Android之 Activity活动详解

一 四大组件 1.1 Activity组件&#xff0c;它一个单独的窗口&#xff0c;程序流程都必须在Activity中运行。 1.2 service组件&#xff0c;用于在后台完成用户指定的操作。 1.3 content provider组件&#xff0c;会为所有的应用准备一个内容窗口&#xff0c;并且保留数据库、…

《程序员面试金典(第6版)》面试题 16.24. 数对和(哈希映射,双指针)

题目描述 设计一个算法&#xff0c;找出数组中两数之和为指定值的所有整数对。一个数只能属于一个数对。 题目传送门 示例 1: 输入: nums [5,6,5], target 11 输出: [[5,6]]示例 2: 输入: nums [5,6,5,6], target 11 输出: [[5,6],[5,6]]提示&#xff1a; nums.length &…

抖音SEO矩阵系统源码开发(一)

抖音seo矩阵营销系统/抖音SEO矩阵号管理系统/抖音霸屏源码开发搭建&#xff0c;抖音官方团队大力推广抖音SEO生态&#xff0c;我们应如何布局开发抖音SEO矩阵系统&#xff0c;来达到账号排名优化的效果&#xff0c;很显然&#xff0c;账号关键词起到了很关键的作用。首先&#…

强化学习笔记-06 Temporal-Difference TD时分学习

本文是博主对《Reinforcement Learning- An introduction》的阅读笔记&#xff0c;不涉及内容的翻译&#xff0c;主要为个人的理解和思考。 TD学习是现代强化学习方法的核心&#xff0c;其是蒙特卡罗法和动态规划法的结合&#xff0c;一方面&#xff0c;其同蒙特卡罗法一样&…

opengauss的pull-request

一个pull-request其实是一个分支&#xff0c;而不是一个提交&#xff0c;所以一个pull-request里可以容纳多个提交&#xff0c;pull-request的提交过程原理很像&#xff08;应该就是&#xff09;rebase一个分支&#xff0c;然后将这个分支合入目标分支。 下面是我修改代码并且…

【软件测试】软件测试岗位会越来越少吗?

我的整体意见是测试岗位不会变少&#xff0c;反而相对于其他岗位会变的更重要一些。 首先纠正一个非常非常错误的观念。测试和测试开发是两个岗位&#xff1f;No&#xff0c;不是的。测试开发是属于测试的。 测试开发只不过是使用类似于开发的技术和能力&#xff0c;来达到测…

第十四章 使用Postfix与Dovecot部署邮件系统

文章目录 第十四章 使用Postfix与Dovecot部署邮件系统一、电子邮件系统1、常见的邮件协议2、注意事项 二、部署电子邮件系统1、部署基础的电子邮件系统&#xff08;1&#xff09;、配置服务器主机名称&#xff08;2&#xff09;、配置服务器的DNS地址&#xff08;3&#xff09;…

GDPU C语言 天码行空12 (未完待续)

&#x1f351; C语言实验专栏 编程题 1. 统计文本文件中各类字符的个数 &#x1f351; C语言读写文件 #include <stdio.h> #include<ctype.h> //判断字符类型函数的头文件int main() {FILE *fp1 NULL,*fp2 NULL;fp1 fopen("f1.txt", "w")…

MyBatis练习

阅读教程实例&#xff0c;我们了解原理后可以自己模仿地写一个程序练练手。 1、创建表&#xff0c;然后手动导入数据 create table four kings (id int primary key,name varchar(4) ,idea varchar(20) )CHARSETutf8;; 2、 写一个实体类&#xff0c;对应数据库的表 package …

什么是网络自动化?有多重要?

什么是网络自动化 网络自动化是在网络环境中实现网络和安全自动化的方法&#xff0c;通过减少人力工作量和人为错误来最大限度地提高效率。 网络自动化是自动化每个网络任务&#xff08;如配置管理、备份和监控&#xff09;的过程&#xff0c;以实现管理大型网络基础架构的最…

小红薯评/论数据采集工具

一、小红薯【评/论】采集工具链接&#xff1a; http://106.53.68.168:9920/xhs-comment-spider 二、使用方式 1、打开网页链接后&#xff0c;按照网页各步骤提示进行操作即可。 2、采集数据时&#xff0c;页面右上角显示【RUNNING】代表在运行中&#xff0c;采集结束后&#xf…

【软件测试】初级测试,如何走向中高级软件测试?

关于软件测试这几年是越来越红火&#xff0c;待遇对于其他行业也是非常的高&#xff0c;万八千的待遇很正常&#xff0c;而现在软件测试行业等级越来越专业化&#xff0c;对软件测试工程师的要求也是越来越高&#xff0c;软件测试工程师一般会分为初级软件测试工程师&#xff0…

Web身份验证(WebAuthn)

目录 1、WebAuthn简介 2、FIDO2&#xff1a;客户端到验证器协议&#xff08;CTAP&#xff09; 3、浏览器和平台 4、Web身份验证API 基本流程 5、使用 WebAuthn API 5.1 注册WebAuthn凭据 5.2使用WebAuthn凭据进行身份验证 6、 WebAuthn演示&#xff08;注册和认证&…

IO 与进程线程

IO进程 scanf\printf:终端 IO&#xff1a;input/output&#xff0c;文件 标准IO 文件IO 文件属性获取&#xff1a;ls -l 文件类型 文件权限 链接数 用户名 组名 大小 时间 文件名 目录操作&#xff1a;ls 库 进程 进程&#xff1a;创建进程 线程&#xff1a;创建线程…