回文数、罗马数转整数、整数反转
文章目录
- 前言
- 一、整数的回文数判断
- 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则将结果置为负数*/
总结
提示:这里对文章进行总结:
以上就是今天分享的三个内容,会有更优的解法,继续加油!
回文数、罗马数转整数、整数反转相关推荐
- 回文串判断(string类:反转reverse)
2029-Palindromes _easy version Problem Description "回文串"是一个正读和反读都一样的字符串,比如"level" ...
- LeetCode 08字符串转整数09回文数
维护公众号:bigsai ,点赞再看,养成习惯! 08字符串转整数 题目描述: 分析: 本题主要是字符串的处理.需要注意以下几点: 去除字符前的空字符 第一个有效字符必须是符号或者数字 只能有一个符号 ...
- 回文数python_回文数 python
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 所谓回文字符串,就是正读和反读都一样的字符串,比如"level&quo ...
- 用JAVA求解判断是否一个数字是回文数
题目: 判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数.例如:121,12321 **解题: 解法一: 把原来的数字翻转,比如A(1)BA(2),翻转得到A(2 ...
- 五位数回文数c语言程序,五位数的回文数有多少个
2018-12-16 数学中有哪些回文数? 简介折叠编辑本段回文数是指一个像16461这样"对称"的数,即:将这个数的数字按相反的顺序重新排列后,所得到的数和原来的数一样.这里,& ...
- 找出11-999间的回文数m,m方,m三次方均为回文
判断是否为回文:将数反序,反序后的书与原来的数一样即是回文 #include "stdafx.h" #include<iostream> using namespace ...
- 1346. 回文平方
1346. 回文平方 回文数是指数字从前往后读和从后往前读都相同的数字. 例如数字 12321 就是典型的回文数字. 现在给定你一个整数 B ,请你判断 1∼300 之间的所有整数中,有哪些整数的平方 ...
- AcWing 1346. 回文平方
回文数是指数字从前往后读和从后往前读都相同的数字. 例如数字 12321 就是典型的回文数字. 现在给定你一个整数 B,请你判断 1∼300之间的所有整数中,有哪些整数的平方转化为 B 进制后,其 B ...
- C语言字符串操作函数 - strcpy、strcmp、strcat、反转、回文
C语言字符串操作函数 1. 字符串反转 - strRev 2. 字符串复制 - strcpy 3. 字符串转化为整数 - atoi 4. 字符串求长 - strlen 5. 字符串连接 - strca ...
- leetcode10场双周赛-验证回文字符串 III (动态规划)
给出一个字符串 s 和一个整数 k,请你帮忙判断这个字符串是不是一个「K 回文」. 所谓「K 回文」:如果可以通过从字符串中删去最多 k 个字符将其转换为回文,那么这个字符串就是一个「K 回文」. 示 ...
最新文章
- 《请不要回应外星人2019》
- 数据导入报错:Got a packet bigger than‘max_allowed_packet’bytes的问题
- 提高DB2数据库Web程序性能的两条规则
- 脚本语言php是什么意思,php是什么脚本语言
- iOS开发UI篇-在UItableview中实现加载更多功能
- Editplus 的配色方案
- python从文件夹中提取指定文件_使用Python实现从各个子文件夹中复制指定文件的方法...
- oracle 事务实现原理,数据库事务的实现原理
- 新手福音,机器学习工具Sklearn 中文文档 0.19版(最新)
- DasViewer加载大疆智图、CC等三维模型无空间坐标的解决方法
- MySQL经典书籍推荐
- LeCo-238. 除自身以外数组的乘积
- 专利撰写是什么工作_如何(以及为什么)撰写出色的用户故事
- Java中jdk1.8和jdk17相互切换
- 正点原子潘多拉上STlinkV2.1固件遇到的坑
- 新装win10系统的桌面没有“我的电脑”图标解决办法
- 2009年世界顶级杀毒软件排名
- 【PAT】乙级 1086 就不告诉你 (15 分) c++
- 在学习web安全的小白看过来,这本《白帽子讲web安全》强烈推荐,必读!(附PDF)
- Hallucination in NLP(自然语言处理中的幻觉现象)
热门文章
- Django(part6)--利用正则的组名进行关键字传参
- 第三次学JAVA再学不好就吃翔(part45)--Object类
- SAP UI5 应用开发教程之六十七 - 基于 OData V4 的 SAP UI5 List-Detail(列表-明细)布局的实现方式试读版
- SAP UI5 应用开发教程之十二 - 使用 CSS 类对 UI 进行进一步美化
- 腾讯虚拟主机上的端口开放问题
- SAP Spartacus 如何取得某个table字段对应的Angular Component
- SAP Spartacus配置后台Commerce Cloud的位置
- 使用url参数传递SAP Analytics Cloud filter的一个例子
- Cannot add product to Opportunity in Fiori - RFC error
- 如何通过Restful API的方式读取SAP Commerce Cloud的Product图片