文章目录

  • 1、题目描述
  • 2、解题思路
  • 3、解题代码

1、题目描述

2、解题思路

  给定一个区间,比如 [50, 100]。

  先计算出下限的长度和上限的长度,分别为 2 和 3,于是分别找出长度为 2 位数的中心对称数字和长度为 3 位数的中心对称数字,接着把超出 [50, 100] 区间的数字剔除即可。

  具体算法采用递归的思路:

  1、遍历上下限的长度;

  2、对于长度为 n 的中心对称数,分别在它两侧尝试放 {‘0’, ‘0’}, {‘1’, ‘1’}, {‘8’, ‘8’}, {‘6’, ‘9’}, {‘9’, ‘6’};

  3、注意长度为 1 或者在正中间是不可以为 6 或者 9的;

  4、统计个数的时候,如果数字长度为 1,则有效;如果长度大于 1 的,则必须第一个字符不能为 ‘0’,否则就不算 n 位数字了。

3、解题代码

class Solution {private final char[][] mapping = {{'0', '0'}, {'1', '1'}, {'8', '8'}, {'6', '9'}, {'9', '6'}};public int count = 0;/*** 计算范围在 [low, high] 之间中心对称数的个数。** @param low* @param high* @return*/public int strobogrammaticInRange(String low, String high) {int lo = low.length();int hi = high.length();// 获取长度 [lo, hi] 区间的中心对称数for (int n = lo; n <= hi; n++) {char[] chs = new char[n];getStrobogrammatic(chs, 0, chs.length - 1, low, high);}return count;}/*** 填充可能的中心对称数到 chs* @param chs* @param lo    左指针* @param hi    右指针* @param low   下限* @param high  上限*/public void getStrobogrammatic(char[] chs, int lo, int hi, String low, String high) {if (lo > hi) {  // 填充完毕,开始统计个数if (chs.length == 1 || chs[0] != '0') { // 如果 chs 长度为 1,则有效,否则第 0 个元素不能为 '0'String str = String.valueOf(chs);if (compare(str, low) && compare(high, str)) {count++;}}return;}// 遍历 lo 和 hi 的可能取值for (char[] map : mapping) {if (lo == hi && map[0] != map[1]) continue; // 正中间不可以是 6 或者 9chs[lo] = map[0];   // 0 1 8chs[hi] = map[1];   // 0 1 8getStrobogrammatic(chs, lo + 1, hi - 1, low, high);}}/*** 判断 s1 是否大于 s2* @param s1* @param s2* @return*/public boolean compare(String s1, String s2) {if (s1.length() == s2.length()) {if (s1.compareTo(s2) >= 0) {return true;} else {return false;}}return true;}
}

【LeetCode - 248】中心对称数 III相关推荐

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

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

  5. LeetCode 1201. 丑数 III(最小公倍数+二分查找)

    1. 题目 请你帮忙设计一个程序,用来找出第 n 个丑数. 丑数是可以被 a 或 b 或 c 整除的 正整数. 示例 1: 输入:n = 3, a = 2, b = 3, c = 5 输出:4 解释: ...

  6. leetcode - 1201. 丑数 III

    请你帮忙设计一个程序,用来找出第 n 个丑数. 丑数是可以被 a 或 b 或 c 整除的 正整数. 示例 1: 输入:n = 3, a = 2, b = 3, c = 5 输出:4 解释:丑数序列为 ...

  7. LeetCode 263. 丑数 264. 丑数 II(DP)

    文章目录 1. LeetCode 263. 丑数 解题 2. LeetCode 264. 丑数 II DP解题 1. LeetCode 263. 丑数 编写一个程序判断给定的数是否为丑数. 丑数就是只 ...

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

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

  9. LeetCode 454. 四数相加 II 思考分析

    题目 给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) ,使得 A[i] + B[j] + C[k] + D[l] = 0. 为了使问题简单化,所有 ...

  10. lintcode 中等题:Single number III 落单的数III

    题目 落单的数 III 给出2*n + 2个的数字,除其中两个数字之外其他每个数字均出现两次,找到这两个数字. 样例 给出 [1,2,2,3,4,4,5,3],返回 1和5 挑战 O(n)时间复杂度, ...

最新文章

  1. SSG140 web、telnet、ssh无法访问,仅支持console
  2. Numpy求均值、中位数、众数的方法
  3. 230:Borrowers
  4. python三十九:logging模块
  5. application.yml如何显示成小叶子图标
  6. 极简教程: 使用 matplotlib 绘制 GIF 动图
  7. java 饥饿现象,Java单例模式、饥饿模式代码实例
  8. php流程控制作业题,php流程控制
  9. java插入排序实现,经典(Java版)排序算法的分析及实现之一直接插入排序
  10. 搜狗AI,正在抢滩智能手机
  11. ajax、axios、fetch之间的详细区别以及优缺点
  12. 召回2014年8英语个月的道路
  13. java图书管理系统(MySQL)
  14. 数据库常见面试题汇总
  15. java坦克大战思路总结
  16. coreldraw x4如何出血_CorelDRAW软件出血位详解
  17. 方差,标准差,协方差,样本标准差,总体标准差,抽样平均误差
  18. 张学孟 (帮别人名字作诗)
  19. Error: datadir must be specified
  20. Linux内核“问题门” - 学习问题、经验集锦

热门文章

  1. android打开apk文件怎么打开,APK是什么文件 APK文件怎么打开?
  2. android启用hdcp_如何在Android Auto上启用开发人员设置
  3. Qt如何调用xlsl的方法!
  4. 一个案例,看懂用户画像如何做出效益
  5. Mac OS X添加网络打印机
  6. 树莓派Python实现相机控制,定时与画面变化捕捉拍照
  7. 2021-12-11 根据单词首字母查找单词
  8. android js桥接,聊一聊桥接(JSBridge)的原理(下)
  9. 移动硬盘计算机限制打不开,可移动磁盘打不开,教您移动硬盘打不开怎么办
  10. 百度网盘内容提取网站