目录

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 中心对称数相关推荐

  1. LeetCode 248. 中心对称数 III(DFS/BFS)

    文章目录 1. 题目 2. 解题 2.1 DFS 2.2 BFS 1. 题目 中心对称数是指一个数字在旋转了 180 度之后看起来依旧相同的数字(或者上下颠倒地看). 写一个函数来计算范围在 [low ...

  2. LeetCode 247. 中心对称数 II(DP)

    文章目录 1. 题目 2. 解题 1. 题目 中心对称数是指一个数字在旋转了 180 度之后看起来依旧相同的数字(或者上下颠倒地看). 找到所有长度为 n 的中心对称数. 示例 : 输入: n = 2 ...

  3. LeetCode 246. 中心对称数(哈希)

    文章目录 1. 题目 2. 解题 1. 题目 中心对称数是指一个数字在旋转了 180 度之后看起来依旧相同的数字(或者上下颠倒地看). 请写一个函数来判断该数字是否是中心对称数,其输入将会以一个字符串 ...

  4. 中心对称数 java_【LeetCode(Java) - 246】中心对称数

    [LeetCode(Java) - 246]中心对称数 [LeetCode(Java) - 246]中心对称数 文章目录 1.题目描述 2.解题思路 3.解题代码 1.题目描述 2.解题思路 ??首先 ...

  5. 247 中心对称数 II

    题目描述: 中心对称数是指一个数字在旋转了 180 度之后看起来依旧相同的数字(或者上下颠倒地看). 找到所有长度为 n 的中心对称数. 示例 : 输入: n = 2 输出: ["11&qu ...

  6. 2022-01-15:中心对称数 III。 中心对称数是指一个数字在旋转了 180 度之后看起来依旧相同的数字(或者上下颠倒地看)。 写一个函数来计算范围在 [low, high] 之间中心对称数的个

    2022-01-15:中心对称数 III. 中心对称数是指一个数字在旋转了 180 度之后看起来依旧相同的数字(或者上下颠倒地看). 写一个函数来计算范围在 [low, high] 之间中心对称数的个 ...

  7. LeetCode(9.回文数)JAVA

    LeetCode(9.回文数) 判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数. 示例 1: 输入: 121 输出: true 示例 2: 输入: -121 输 ...

  8. java回文数算法for_【Java】【每日算法/刷穿 LeetCode】9. 回文数(简单)

    首页 专栏 java 文章详情 0 [每日算法/刷穿 LeetCode]9. 回文数(简单) 宫水三叶发布于 今天 15:30 题目描述 判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从 ...

  9. Leetcode:0002(两数之和)

    LeetCode:0002(两数之和) 题目描述:给定两个非空链表来表示两个非负整数.位数按照逆序方式存储,它们的每个节点只存储单个数字.将两数相加返回一个新的链表. 你可以假设除了数字 0 之外,这 ...

  10. 对称数c语言,中心对称数 - Developmer的个人空间 - OSCHINA - 中文开源技术交流社区...

    中心对称数是指一个数字在旋转了 180 度之后看起来依旧相同的数字(或者上下颠倒地看). 请写一个函数来判断该数字是否是中心对称数,其输入将会以一个字符串的形式来表达数字. class Solutio ...

最新文章

  1. 十大流行AI框架和库的优缺点对比
  2. JavaScript学习记录总结(四)——js函数的特殊性
  3. 当向后台插入或读取JSON数据遇见回车时
  4. Java多线程之迭代器问题(四)
  5. ChubaoFS:一个面向大规模容器平台的分布式文件系统
  6. CM: 如何通过table SKWG_BREL快速查询product attachment信息
  7. favicon.ico--网站标题小图片二三事
  8. 拟态防御_纯素食汉堡的拟态
  9. 一次Task.Run异常问题的排查
  10. CreateProcess的使用方法
  11. yii 定义controller model
  12. 拓端tecdat|共享单车大数据报告
  13. 设置jupyter notebook软件的字体样式
  14. Avalondock 第一步 创建停靠面板
  15. 微信支付:手机系统自带的浏览器,调用微信支付如何实现(非扫码)
  16. 2022 MegCup | 小模型盲降噪怎么比?资深炼丹师给你赛前指导!
  17. 小学生C++编程基础 课程18(共6题)
  18. 网页开发工具有哪些?——开发者必备的15个Web开发工具
  19. ACM算法训练【贪心合集】
  20. 设计一个学生学籍管理系统

热门文章

  1. X1000 SPI 时钟获取失败
  2. Mysql 实现多种逻辑删除方案
  3. 计算机网络hdcp是什么意思,韩立平:笔记本电脑上hdcp是干什么的?
  4. Android跑马灯进度条,跑马灯进度条在Powershell中冻结
  5. 网络工程师成长日记076-如何成为网络工程师中的高手
  6. PPT动画教程:修改幻灯片母板
  7. 各场景下NetApp的数据备份推荐(Veeam+群晖NAS)
  8. 服务器防御DDOS的办法
  9. 一个「秒搜」豆瓣好书的网站
  10. 鹏业安装算量软件一键识别设备操作说明