前言说明

算法学习,日常刷题记录。

题目连接

中心对称数

题目内容

中心对称数是指一个数字在旋转了180度之后看起来依旧相同的数字(或者上下颠倒地看)。

请写一个函数来判断该数字是否是中心对称数,其输入将会以一个字符串的形式来表达数字。

示例1:

输入: num = “69”

输出: true

示例2:

输入: num = “88”

输出: true

示例3:

输入: num = “962”

输出: false

示例4:

输入:num = “1”

输出:true

分析过程

思路:双指针法。

注意:这道题要注意理解题意,这里不是回文数,回文数是倒序和顺序一致,而这里是旋转180度,旋转180度后数字被移动到对称的下标处,只有0、1和8旋转180度后还是自身,6旋转180度是9,9旋转180度后是6,其他数字旋转180度后不是正确的数字,可直接判断为false

第一步

遍历字符串,从两边往中间,即双指针向字符串中间靠拢,直到左指针大于右指针。

第二步

获取左指针字符c1,获取右指针字符c2,判断字符是否为对称数字,即可以旋转180度的数字,只有0、1、8、6、9旋转180度后还是正确的数字。

若两个字符c1和c2都是对称数字,继续下一步的判断;若两个字符c1和c2不都是对称数字,那么肯定不是中心对称数,直接返回false。

第三步

判断字符是否为对称相等数字,即在旋转180度后相等的数字,只有0、1、8旋转180度后还相等。

若两个字符c1和c2都是对称相等的数字,那么字符就限定在了0、1、8,这时候若两个字符c1和c2不相等,即旋转180度后就不是中心对称数了,直接返回false,否则继续。

若两个字符c1和c2不都是对称相等的数字,那么字符可能都是6、9,或者一个字符是6、9,另一个字符是0、1、8,这时候只有当一个字符是6,另一个字符是9时,才是符合条件的,符合条件的继续,否则肯定不是中心对称数,直接返回false。

第四步

若能遍历完字符串,证明是中心对称数,返回true。

解答代码

class Solution {public boolean isStrobogrammatic(String num) {// 双指针法// 这道题要注意理解题意,这里不是回文数,回文数是倒序和顺序一致,而这里是旋转180度,旋转180度后数字被移动到对称的下标处,只有0、1和8旋转180度后还是自身,6旋转180度是9,9旋转180度后是6,其他数字旋转180度后不是正确的数字,可直接判断为false// 遍历,双指针向中间靠拢,直到左指针大于右指针for (int i = 0, j = num.length() - 1; i <= j; ++i, --j) {// 获取左指针字符char c1 = num.charAt(i);// 获取右指针字符char c2 = num.charAt(j);if (isSymmetryChar(c1) && isSymmetryChar(c2)) {// 若两个字符都是对称数字,继续下一步的判断if (isEqualChar(c1) && isEqualChar(c2)) {// 若两个字符都是对称相等的数字,那么字符就限定在了0、1、8if (c1 != c2) {// 若两个字符不相等,旋转180度后就不是中心对称数了,直接返回falsereturn false;}} else {// 若两个字符不都是对称相等的数字,那么字符可能都是6、9,或者一个字符是6、9,另一个字符是0、1、8if (!((c1 == '6' && c2 == '9') || (c1 == '9' && c2 == '6'))) {// 只有当一个字符是6,另一个字符是9时,才是符合条件的,否则肯定不是中心对称数,直接返回falsereturn false;}}} else {// 若两个字符不都是对称数字,那么肯定不是中心对称数,直接返回falsereturn false;}}// 若能遍历完,证明是中心对称数,返回truereturn true;}// 判断是否为对称数字,即可以旋转180度的数字,只有0、1、8、6、9旋转180度后还是正确的数字private boolean isSymmetryChar (char c) {return c == '0' || c == '1' || c == '8' || c == '6' || c == '9';}// 判断是否为对称相等数字,即在旋转180度后相等的数字,只有0、1、8旋转180度后还相等private boolean isEqualChar (char c) {return c == '0' || c == '1' || c == '8';}
}

提交结果

执行用时1ms,时间击败100.00%的用户,内存消耗36.2MB,空间击败31.50%的用户。

原文链接

原文链接:中心对称数

LeetCode刷题-中心对称数相关推荐

  1. LeetCode刷题-两数之和(持续更新)

    文章目录 LeetCode 1. Two Sum (两数之和) 题目描述 样例 解题思路一(暴力法) 解题思路二(使用map) 前言:最近业余时间,一直在看LeetCode上面的题,上面有许多好的解题 ...

  2. leetCode刷题--两数相加

    给你两个 非空 的链表,表示两个非负的整数.它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字. 请你将两个数相加,并以相同形式返回一个表示和的链表. 你可以假设除了数字 0 ...

  3. Leetcode刷题第1题:两数之和(基于Java语言)

    ** Leetcode刷题第1题:两数之和(基于Java语言) ** 题目: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标 ...

  4. LeetCode刷题笔记- 15.三数之和

    LeetCode刷题笔记- 15.三数之和 C语言 题目 注意点 C语言 /*** Return an array of arrays of size *returnSize.* The sizes ...

  5. LeetCode刷题记录10——434. Number of Segments in a String(easy)

    LeetCode刷题记录10--434. Number of Segments in a String(easy) 目录 LeetCode刷题记录9--434. Number of Segments ...

  6. LeetCode刷题记录6——696. Count Binary Substrings(easy)

    LeetCode刷题记录6--696. Count Binary Substrings(easy) 目录 LeetCode刷题记录6--696. Count Binary Substrings(eas ...

  7. LeetCode刷题记录5——441. Arranging Coins(easy)

    LeetCode刷题记录5--441. Arranging Coins(easy) 目录 LeetCode刷题记录5--441. Arranging Coins(easy) 题目 语言 思路 后记 题 ...

  8. LeetCode刷题记录2——217. Contains Duplicate(easy)

    LeetCode刷题记录2--217. Contains Duplicate(easy) 目录 LeetCode刷题记录2--217. Contains Duplicate(easy) 题目 语言 思 ...

  9. Leetcode刷题 463题:岛屿的周长(基于Java语言)

    ** Leetcode刷题 463题:岛屿的周长(基于Java语言) ** 一. 题目描述: 给定一个包含 0 和 1 的二维网格地图,其中 1 表示陆地 0 表示水域. 网格中的格子水平和垂直方向相 ...

  10. c语言贪心算法合并箭,LeetCode刷题题库:贪心算法

    LeetCode刷题笔记:贪心算法 自大学开始,我便陆陆续续的学习一些 算法和数据结构 方面的内容,同时也开始在一些平台刷题,也会参加一些大大小小的算法竞赛.但是平时刷题缺少目的性.系统性,最终导致算 ...

最新文章

  1. 2022-2028年中国木制拼板玩具市场调查研究报告
  2. 在Ubuntu 16.04.5 LTS上使用python第三方库QRCode 6.0生成二维码实录
  3. HttpClient实现CSDN自动登录
  4. java增加缓存,java – 如何增加Integer对象的缓存大小
  5. Android插件化原理解析——概要
  6. c++ 类 A类调用B类
  7. Spring 核心容器类BeanDefinition
  8. [转]计算机视觉领域稍微容易中的期刊(第一版)
  9. windows 8文件操作帮助类FileHelper
  10. Microsoft规划了.NET的未来发展
  11. java插入排序_Java程序要插入排序
  12. String、StringBuffer和StringBuilde的区别
  13. html导出pdf实例,jsPDF导出pdf示例
  14. 迭代器 iterator
  15. swift:创建滚动视图的图片轮播器
  16. 进阶04 4 Collection集合类+Iterator迭代器+增强for+泛型
  17. 光绪变法为什么没成功
  18. 阿里云盘来袭,送几个福利码!手慢无!
  19. dw可以编辑java吗_用dreamweaver开发ASP图文教程。(修改资料篇)
  20. 头孢是什么?什么是双硫仑反应?//2021-2-11

热门文章

  1. 《吴忠与富富平》之一:秦统一前后的吴忠及秦汉对吴忠地区的开发
  2. SpringBoot整合MybatisPlus实现逻辑删除
  3. 魔兽十区服务器人最多,十区毁灭计划 新一轮wow大服务器实装公告
  4. Android之常见UI控件
  5. 微服务可用性设计(二):过载保护,限流
  6. IC基础知识(十五)RS触发器、JK触发器、D触发器、T触发器
  7. PCI、PCIE、PIC
  8. 菜肴百度百科html,酸汤鱼
  9. curl_easy_getinfo() -- 从 curl 句柄里获得附加信息
  10. sqlalchemy的基本操作大全