文章目录

  • 前言
  • 一、整数的回文数判断
    • 1、负数和一位数的判断
    • 2、将整数存进vector容器
    • 3、下标mid和next的定位(关键)
    • 4、循环比较并得出结果
  • 二、罗马数字转整数
    • 1、简介罗马数字
    • 2、利用for嵌套switch case语句实现转换:
  • 三、整数反转
    • 1、接值,并检查是否为负数
    • 2、检查位数(将count乘到与x的一致位数)
    • 3、利用count进行位数转换
    • 4、处理两种特殊情况
  • 总结

前言

<来自力扣的三道简单算法题解法分享>

题目一:判断一个整数是否是回文数;
题目二:把输入的罗马数字转换成整数;
题目三:把输入的整数反转后输出。


下面案例仅供参考

一、整数的回文数判断

输入一个整数,判断是否为回文数,是则返回true,否则返回false。 例:输入【-121】,返回false;输入【12321】,返回true。

1、负数和一位数的判断

        if (x < 0)return false;                    //小于0的都不是回文数if (x >= 0 && x <= 9)return true;          //0~9是回文数

2、将整数存进vector容器

        vector<int>a;int n = 0;while (x != 0) {         //整除法存进容器a (头插)a.insert(a.begin(), x % 10);x /= 10;n++;}

3、下标mid和next的定位(关键)

        int mid = n / 2 - 1;                        /*定位mid*/int Next = 0;if (n % 2 == 0)Next = mid + 1;                      /*定位偶数的next*/elseNext = mid + 2;                      /*定位奇数的next*/

4、循环比较并得出结果

        int i = 0, j = 0;for (i = mid, j = Next; i >= 0 && j <= a.size(); i--, j++) {if (a[i] == a[j])continue;else return false;}return true;

二、罗马数字转整数

1、简介罗马数字

罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 I (1)、V(5)、X(10)、L (50)、C(100)、D (500)、M(1000) 例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。 通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。同样地,数字 9 表示为 IX。

这个特殊的规则只适用于以下六种情况:

I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。
X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。
C 可以放在 D (500) 和 M (1000) 的左边,来表示 400 和 900。

2、利用for嵌套switch case语句实现转换:

        for (int i = 0; i < s.size(); i++) {switch (s[i]) {case 'I': {if (s[i + 1] == 'V') { ans += 4; i++; break; }if (s[i + 1] == 'X') { ans += 9; i++; break; }ans += 1;}break;case 'V':ans += 5; break;case 'X': {if (s[i + 1] == 'L') { ans += 40; i++; break; }if (s[i + 1] == 'C') { ans += 90; i++; break; }ans += 10;}break;case 'L':ans += 50; break;case 'C': {if (s[i + 1] == 'D') { ans += 400; i++; break; }if (s[i + 1] == 'M') { ans += 900; i++; break; }ans += 100;}break;case 'D':ans += 500; break;case 'M':ans += 1000; break;}}

三、整数反转

输入一个int类型范围的整数,输出反转后的整数
例:
输入【-123】输出【-321】
输入【857】 输出【758】

1、接值,并检查是否为负数

特殊情况:
当输入值为-2147483648时,直接用x=-x会超出int类型的范围
(int类型取值范围:-2147483648 至 2147483647)

        long long y;int tap = 0;if (x < 0) {    /*检查是否为负数*//*是则将其变为正数并标记*/y = x;       /*考虑到当x取-2147483648时,不能用x=-x*/y = -y;tap = 1;}else y = x;

2、检查位数(将count乘到与x的一致位数)

        int temp = y;long long count = 1;while (temp != 0) {    /*整除法检查x的位数*/temp /= 10;count *= 10;     /*count乘到比x位数多一位*/}count /= 10;       /*count减少一位,与x位数一致*/

3、利用count进行位数转换

        long long ans = 0;while (y != 0) {        //利用count进行位数转换ans += ((y % 10) * count);y /= 10;count /= 10;}

4、处理两种特殊情况

 if (ans < -2147483648 || ans>2147483647)return 0; /*如果超出int的范围则返回0*/if (tap == 1) ans = -ans;/*如果标记为1则将结果置为负数*/

总结

提示:这里对文章进行总结:
以上就是今天分享的三个内容,会有更优的解法,继续加油!

回文数、罗马数转整数、整数反转相关推荐

  1. 回文串判断(string类:反转reverse)

    2029-Palindromes _easy version Problem Description "回文串"是一个正读和反读都一样的字符串,比如"level" ...

  2. LeetCode 08字符串转整数09回文数

    维护公众号:bigsai ,点赞再看,养成习惯! 08字符串转整数 题目描述: 分析: 本题主要是字符串的处理.需要注意以下几点: 去除字符前的空字符 第一个有效字符必须是符号或者数字 只能有一个符号 ...

  3. 回文数python_回文数 python

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 所谓回文字符串,就是正读和反读都一样的字符串,比如"level&quo ...

  4. 用JAVA求解判断是否一个数字是回文数

    题目: 判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数.例如:121,12321 **解题: 解法一: 把原来的数字翻转,比如A(1)BA(2),翻转得到A(2 ...

  5. 五位数回文数c语言程序,五位数的回文数有多少个

    2018-12-16 数学中有哪些回文数? 简介折叠编辑本段回文数是指一个像16461这样"对称"的数,即:将这个数的数字按相反的顺序重新排列后,所得到的数和原来的数一样.这里,& ...

  6. 找出11-999间的回文数m,m方,m三次方均为回文

    判断是否为回文:将数反序,反序后的书与原来的数一样即是回文 #include "stdafx.h" #include<iostream> using namespace ...

  7. 1346. 回文平方

    1346. 回文平方 回文数是指数字从前往后读和从后往前读都相同的数字. 例如数字 12321 就是典型的回文数字. 现在给定你一个整数 B ,请你判断 1∼300 之间的所有整数中,有哪些整数的平方 ...

  8. AcWing 1346. 回文平方

    回文数是指数字从前往后读和从后往前读都相同的数字. 例如数字 12321 就是典型的回文数字. 现在给定你一个整数 B,请你判断 1∼300之间的所有整数中,有哪些整数的平方转化为 B 进制后,其 B ...

  9. C语言字符串操作函数 - strcpy、strcmp、strcat、反转、回文

    C语言字符串操作函数 1. 字符串反转 - strRev 2. 字符串复制 - strcpy 3. 字符串转化为整数 - atoi 4. 字符串求长 - strlen 5. 字符串连接 - strca ...

  10. leetcode10场双周赛-验证回文字符串 III (动态规划)

    给出一个字符串 s 和一个整数 k,请你帮忙判断这个字符串是不是一个「K 回文」. 所谓「K 回文」:如果可以通过从字符串中删去最多 k 个字符将其转换为回文,那么这个字符串就是一个「K 回文」. 示 ...

最新文章

  1. 《请不要回应外星人2019》
  2. 数据导入报错:Got a packet bigger than‘max_allowed_packet’bytes的问题
  3. 提高DB2数据库Web程序性能的两条规则
  4. 脚本语言php是什么意思,php是什么脚本语言
  5. iOS开发UI篇-在UItableview中实现加载更多功能
  6. Editplus 的配色方案
  7. python从文件夹中提取指定文件_使用Python实现从各个子文件夹中复制指定文件的方法...
  8. oracle 事务实现原理,数据库事务的实现原理
  9. 新手福音,机器学习工具Sklearn 中文文档 0.19版(最新)
  10. DasViewer加载大疆智图、CC等三维模型无空间坐标的解决方法
  11. MySQL经典书籍推荐
  12. LeCo-238. 除自身以外数组的乘积
  13. 专利撰写是什么工作_如何(以及为什么)撰写出色的用户故事
  14. Java中jdk1.8和jdk17相互切换
  15. 正点原子潘多拉上STlinkV2.1固件遇到的坑
  16. 新装win10系统的桌面没有“我的电脑”图标解决办法
  17. 2009年世界顶级杀毒软件排名
  18. 【PAT】乙级 1086 就不告诉你 (15 分) c++
  19. 在学习web安全的小白看过来,这本《白帽子讲web安全》强烈推荐,必读!(附PDF)
  20. Hallucination in NLP(自然语言处理中的幻觉现象)

热门文章

  1. Django(part6)--利用正则的组名进行关键字传参
  2. 第三次学JAVA再学不好就吃翔(part45)--Object类
  3. SAP UI5 应用开发教程之六十七 - 基于 OData V4 的 SAP UI5 List-Detail(列表-明细)布局的实现方式试读版
  4. SAP UI5 应用开发教程之十二 - 使用 CSS 类对 UI 进行进一步美化
  5. 腾讯虚拟主机上的端口开放问题
  6. SAP Spartacus 如何取得某个table字段对应的Angular Component
  7. SAP Spartacus配置后台Commerce Cloud的位置
  8. 使用url参数传递SAP Analytics Cloud filter的一个例子
  9. Cannot add product to Opportunity in Fiori - RFC error
  10. 如何通过Restful API的方式读取SAP Commerce Cloud的Product图片