LeetCode 246/247/248 中心对称数
目录
LeetCode 246 (Easy):判断一个数是否为中心对称数
LeetCode 247 (Medium):给出长度为 n 的所有中心对称数
LeetCode 248 (Hard):求给定区间内有多少中心对称数
LeetCode 246 (Easy):判断一个数是否为中心对称数
A strobogrammatic number is a number that looks the same when rotated 180 degrees (looked at upside down).
Write a function to determine if a number is strobogrammatic. The number is represented as a string.
Examples:
Input: "69" Output: true
Input: "88" Output: true
Input: "962" Output: false
解答:
两个数字只有这5种情况满足中心对称:11,88, 00, 69,96。可以看做求回文数的一种特殊情况,用双指针。
参考代码:https://www.cnblogs.com/grandyang/p/5196960.html
LeetCode 247 (Medium):给出长度为 n 的所有中心对称数
A strobogrammatic number is a number that looks the same when rotated 180 degrees (looked at upside down).
Find all strobogrammatic numbers that are of length = n.
For example, Given n = 2, return ["11","69","88","96"]
.
Hint: Try to use recursion and notice that it should recurse with n - 2 instead of n - 1.
解答:
题目中给了提示说可以用递归来做,而且提示了递归调用n-2,而不是n-1。我们先来列举一下n为0,1,2,3,4的情况:
n = 0: none
n = 1: 0, 1, 8
n = 2: 11, 69, 88, 96
n = 3: 101, 609, 808, 906, 111, 619, 818, 916, 181, 689, 888, 986
n = 4: 1111, 6119, 8118, 9116, 1691, 6699, 8698, 9696,
1881, 6889, 8888, 9886, 1961, 6969, 8968, 9966, 1001, 6009, 8008, 9006
可以看到,长度为 i 的数是在长度为 i-2 的所有数的两端加上 11,88,69,96.
有一点要注意:长度为n的数,除了上述规律外,还多4个数 (因为长度为n-2的数两端不能为0)
因此,在中间递归(构造长度为i的数, i<n)的过程中,都需要在数字两端加上00,11,88,69,96。
最后构造长度为n的数时,只在两端加上11,88,69,96。
参考代码:https://www.cnblogs.com/grandyang/p/5200919.html
LeetCode 248 (Hard):求给定区间内有多少中心对称数
A strobogrammatic number is a number that looks the same when rotated 180 degrees (looked at upside down).
Write a function to count the total strobogrammatic numbers that exist in the range of low <= num <= high.
Example:
Input: low = "50", high = "100"
Output: 3
Explanation: 69, 88, and 96 are three strobogrammatic numbers.
Note: Because the range might be a large number, the low and high numbers are represented as string.
解答:
从 n=0 和 n=1 的中心对称数开始,在每个数两端加上00,11,88,69,96。
得到的数num一定也是中心对称数,所以只需要判断num是否在[low, high]内即可( string可用运算符直接比较大小)。
class Solution {
public:string low, high;int cnt;int strobogrammaticInRange(string low, string high) {this->low = low;this->high = high;cnt = 0;solve("");solve("0");solve("1");solve("8");return cnt;}void solve(string num) {if((num.size() > high.size()) || // 递归边界:若num的长度 > high的长度(num.size()==high.size() && num > high)) // 或长度相等,但num比high大 (string可用>直接比较)return;// 若num在[low,high]内, 就计数if(!(num.size()>1 && num[0]=='0') && // num开头不是0((num.size() > low.size()) ||(num.size()==low.size() && num>=low)) // 且num>=low (string可用>直接比较))++cnt;solve("0" + num + "0");solve("1" + num + "1");solve("8" + num + "8");solve("6" + num + "9");solve("9" + num + "6");}
};
参考代码:https://www.cnblogs.com/grandyang/p/5203228.html
LeetCode 246/247/248 中心对称数相关推荐
- LeetCode 248. 中心对称数 III(DFS/BFS)
文章目录 1. 题目 2. 解题 2.1 DFS 2.2 BFS 1. 题目 中心对称数是指一个数字在旋转了 180 度之后看起来依旧相同的数字(或者上下颠倒地看). 写一个函数来计算范围在 [low ...
- LeetCode 247. 中心对称数 II(DP)
文章目录 1. 题目 2. 解题 1. 题目 中心对称数是指一个数字在旋转了 180 度之后看起来依旧相同的数字(或者上下颠倒地看). 找到所有长度为 n 的中心对称数. 示例 : 输入: n = 2 ...
- LeetCode 246. 中心对称数(哈希)
文章目录 1. 题目 2. 解题 1. 题目 中心对称数是指一个数字在旋转了 180 度之后看起来依旧相同的数字(或者上下颠倒地看). 请写一个函数来判断该数字是否是中心对称数,其输入将会以一个字符串 ...
- 中心对称数 java_【LeetCode(Java) - 246】中心对称数
[LeetCode(Java) - 246]中心对称数 [LeetCode(Java) - 246]中心对称数 文章目录 1.题目描述 2.解题思路 3.解题代码 1.题目描述 2.解题思路 ??首先 ...
- 247 中心对称数 II
题目描述: 中心对称数是指一个数字在旋转了 180 度之后看起来依旧相同的数字(或者上下颠倒地看). 找到所有长度为 n 的中心对称数. 示例 : 输入: n = 2 输出: ["11&qu ...
- 2022-01-15:中心对称数 III。 中心对称数是指一个数字在旋转了 180 度之后看起来依旧相同的数字(或者上下颠倒地看)。 写一个函数来计算范围在 [low, high] 之间中心对称数的个
2022-01-15:中心对称数 III. 中心对称数是指一个数字在旋转了 180 度之后看起来依旧相同的数字(或者上下颠倒地看). 写一个函数来计算范围在 [low, high] 之间中心对称数的个 ...
- LeetCode(9.回文数)JAVA
LeetCode(9.回文数) 判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数. 示例 1: 输入: 121 输出: true 示例 2: 输入: -121 输 ...
- java回文数算法for_【Java】【每日算法/刷穿 LeetCode】9. 回文数(简单)
首页 专栏 java 文章详情 0 [每日算法/刷穿 LeetCode]9. 回文数(简单) 宫水三叶发布于 今天 15:30 题目描述 判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从 ...
- Leetcode:0002(两数之和)
LeetCode:0002(两数之和) 题目描述:给定两个非空链表来表示两个非负整数.位数按照逆序方式存储,它们的每个节点只存储单个数字.将两数相加返回一个新的链表. 你可以假设除了数字 0 之外,这 ...
- 对称数c语言,中心对称数 - Developmer的个人空间 - OSCHINA - 中文开源技术交流社区...
中心对称数是指一个数字在旋转了 180 度之后看起来依旧相同的数字(或者上下颠倒地看). 请写一个函数来判断该数字是否是中心对称数,其输入将会以一个字符串的形式来表达数字. class Solutio ...
最新文章
- 十大流行AI框架和库的优缺点对比
- JavaScript学习记录总结(四)——js函数的特殊性
- 当向后台插入或读取JSON数据遇见回车时
- Java多线程之迭代器问题(四)
- ChubaoFS:一个面向大规模容器平台的分布式文件系统
- CM: 如何通过table SKWG_BREL快速查询product attachment信息
- favicon.ico--网站标题小图片二三事
- 拟态防御_纯素食汉堡的拟态
- 一次Task.Run异常问题的排查
- CreateProcess的使用方法
- yii 定义controller model
- 拓端tecdat|共享单车大数据报告
- 设置jupyter notebook软件的字体样式
- Avalondock 第一步 创建停靠面板
- 微信支付:手机系统自带的浏览器,调用微信支付如何实现(非扫码)
- 2022 MegCup | 小模型盲降噪怎么比?资深炼丹师给你赛前指导!
- 小学生C++编程基础 课程18(共6题)
- 网页开发工具有哪些?——开发者必备的15个Web开发工具
- ACM算法训练【贪心合集】
- 设计一个学生学籍管理系统