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

文章目录

    • 1. 题目
    • 2. 解题
      • 2.1 DFS
      • 2.2 BFS

1. 题目

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

写一个函数来计算范围在 [low, high] 之间中心对称数的个数。

示例:
输入: low = "50", high = "100"
输出: 3 
解释: 698896 是三个在该范围内的中心对称数
注意:
由于范围可能很大,所以 low 和 high 都用字符串表示。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/strobogrammatic-number-iii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

LeetCode 246. 中心对称数(哈希)
LeetCode 247. 中心对称数 II(DP)
LeetCode 1056. 易混淆数(哈希)

  • 两侧加对称的数,初始从 空字符,0,1,8 开始

2.1 DFS

class Solution {vector<string> l = {"0","1","6","8","9"};vector<string> r = {"0","1","9","8","6"};int ans = 0;
public:int strobogrammaticInRange(string low, string high) {if(low.size() > high.size() || (low.size()==high.size() && low > high))return 0;vector<string> number = {"", "0","1","8"};for(int i = 0; i < number.size(); ++i){dfs(number[i], low, high);}return ans;}void dfs(string num, string& low, string& high){if(num.size() > high.size())return;if(num.size()>=low.size() && num.size() <= high.size()){if(num.size()==low.size() && num < low) return;if(num.size()==high.size() && num > high)return;if(num.size() == 1 || num[0]!='0')ans++;}for(int i = 0; i < 5; ++i){dfs(l[i]+num+r[i], low, high);}}
};

544 ms 44.8 MB

2.2 BFS

class Solution {vector<string> l = {"0","1","6","8","9"};vector<string> r = {"0","1","9","8","6"};int ans = 0;
public:int strobogrammaticInRange(string low, string high) {if(low.size() > high.size() || (low.size()==high.size() && low > high))return 0;queue<string> q;q.push("");q.push("0");q.push("1");q.push("8");string num;while(!q.empty()){num = q.front();q.pop();if(num.size() > high.size())continue;if(num.size()>=low.size() && num.size() <= high.size()){if(num.size()==low.size() && num < low) continue;if(num.size()==high.size() && num > high)continue;if(num.size() == 1 || num[0]!='0')ans++;}for(int i = 0; i < 5; ++i)q.push(l[i]+num+r[i]);}return ans;}
};

752 ms 92.6 MB


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
Michael阿明

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/474498.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

sysctl简介

sysctl配置与显示在/proc/sys目录中的内核参数&#xff0e;可以用sysctl来设置或重新设置联网功能&#xff0c;如IP转发、IP碎片去除以及源路由检查等。用户只需要编辑/etc/sysctl.conf文件&#xff0c;即可手工或自动执行由sysctl控制的功能。 命令格式&#xff1a; sysctl [-…

u盘引导linux加载raid卡驱动,使用U盘加载SCSI/RAID卡驱动

hai00882008-01-30 15:53我只備份一次,我的磁帶有400G, 備份第二次,磁帶就彈出來,我的tapelist里的內容 20080130151855 DailySet1-01 reuse是不是和我的anmanda.conf的chg-manua(更換磁帶的腳本)l這個腳本有關係,-sh-3.00$ amcheck DailySet1Amanda Tape Server Host Check---…

LeetCode 1067. 范围内的数字计数

文章目录1. 题目2. 解题1. 题目 给定一个在 0 到 9 之间的整数 d&#xff0c;和两个正整数 low 和 high 分别作为上下界。 返回 d 在 low 和 high 之间的整数中出现的次数&#xff0c;包括边界 low 和 high。 示例 1&#xff1a; 输入&#xff1a;d 1, low 1, high 13 输…

多参的实现原理

相信大家都使用过C语言的库函数&#xff1a;printf("%d%d", 1, 2)的吧&#xff0c;使用确实很方便功能也很强大。 但是为什么它可以接受多个参数呢&#xff1f; 现在我们来解析一下多参的实现原理&#xff0c;网上也找了一些文章。发现解析得都不全面。并且有BUG。 先…

学生成绩统计c语言课程设计,学生成绩管理系统-C语言课程设计

记一次课程设计作业 学生成绩管理系统#include#include#include#include/*学生成绩管理系统介绍2017C语言课程设计 2021609361.支持将数据保存到文件并从文件中读取已有数据2.支持添加、删改数据3.支持按学号或姓名查询、删除、修改数据4.支持简单统计&#xff0c;包括 不及格…

LeetCode 439. 三元表达式解析器

文章目录1. 题目2. 解题2.1 递归2.2 循环1. 题目 给定一个以字符串表示的任意嵌套的三元表达式&#xff0c;计算表达式的值。 你可以假定给定的表达式始终都是有效的并且只包含数字 0-9, ?, :, T 和 F (T 和 F 分别表示真和假&#xff09;。 注意&#xff1a; 给定的字符串…

Java中,String类型和包装类型作为参数传递时,是属于值传递还是引用传递呢?...

《Java中&#xff0c;String类型和包装类型作为参数传递时&#xff0c;是属于值传递还是引用传递呢?》 《Java中的值传递和引用传递》 原理知识: 如果参数类型是原始类型&#xff0c;那么传过来的就是这个参数的一个副本&#xff0c;也就是这个原始参数的值&#xff0c;这个跟…

c语言结构内部定义指针,C语言知识补漏(一)结构体指针以及位域定义

一、结构体指针typedef struct{unsignedlong int DATA;unsignedlong int DIRECTION;unsignedlong int INTERRUPT_MASK;unsignedlong int EDGE_CAPTURE;}PIO_STR;//define LED Register#ifdef _LED#define LED ((PIO_STR *)LED_BASE) //表示定义了一个PIO_STR的指针&#xff0c;…

LeetCode 1216. 验证回文字符串 III(DP)

文章目录1. 题目2. 解题1. 题目 给出一个字符串 s 和一个整数 k&#xff0c;请你帮忙判断这个字符串是不是一个「K 回文」。 所谓「K 回文」&#xff1a;如果可以通过从字符串中删去最多 k 个字符将其转换为回文&#xff0c;那么这个字符串就是一个「K 回文」。 示例&#x…

武松打虎进化版

[代码] [Java]代码 import java.util.*; class Q {boolean b false;Random r null;//武松的血条int wusongblood 10;//老虎的血条int tiggerblood 10;public Q(){r new Random();}// http://www.haokk123.info/linked/20130424.do 武松侵犯public synchronized void wugon…

c语言表达式10 amp 6等于多少,C语言基础——表达式

目录回顾&#xff1a;一、定义概念&#xff1a;二、表达式的分类举例说明&#xff1a;(一)首先是加、减、乘、除、取余四种表达式&#xff1a;(二)一元表达式(三)强制转换表达式(四)判断表达式(五)逻辑表达式(六)移位表达式小结写在最后&#xff1a;回顾&#xff1a;在上一篇博…

python中break与continue使用

1.break的作用&#xff1a;用来结束整个循环&#xff0c;continue的作用&#xff1a;用来结束本次循环&#xff0c;紧接着执行下一次的循环。 2.break/continue只能用在循环中&#xff0c;除此以外不能单独使用。 3.break/continue在嵌套循环中&#xff0c;只对最近的一层循环…

LeetCode 1274. 矩形内船只的数目(分治)

文章目录1. 题目2. 解题1. 题目 (此题是 交互式问题 ) 在用笛卡尔坐标系表示的二维海平面上&#xff0c;有一些船。 每一艘船都在一个整数点上&#xff0c;且每一个整数点最多只有 1 艘船。 有一个函数 Sea.hasShips(topRight, bottomLeft) &#xff0c;输入参数为右上角和…

C语言数组相似度比对,某课程设计---文件相似度判断

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼//返回两个文件操作是否都成功return ( result1 && result2 );}//功能:将数据存储到文件内//输入:const char * FileName----想写入数据的文件名// :const char * Data----想写入的数据//输出:无//返回值:布尔型---真表…

图的定义与术语 - 数据结构和算法54

图的定义与术语 让编程改变世界 Change the world by program 在前边讲解的线性表中&#xff0c;每个元素之间只有一个直接前驱和一个直接后继&#xff0c;在树形结构中&#xff0c;数据元素之间是层次关系&#xff0c;并且每一层上的数据元素可能和下一层中多个元素相关&…

c 语言银行排队系统,C++实现银行排队系统

#include #include #include int cnt0; //当日客流量int sum0; //当日客户排队总时间typedef struct pnode{int number;int cometime;int leavetime;struct pnode *next;}*person;typedef struct node{person front;person rear;int length;}linkqueue;linkqueue q[5];int numb…