LeetCode 291. 单词规律 II(回溯)

文章目录

    • 1. 题目
    • 2. 解题

1. 题目

给你一种规律 pattern 和一个字符串 str,请你判断 str 是否遵循其相同的规律。

这里我们指的是 完全遵循,例如 pattern 里的每个字母和字符串 str 中每个 非空 单词之间,存在着双向连接的对应规律。

示例1:
输入: pattern = "abab", str = "redblueredblue"
输出: true示例2:
输入: pattern = "aaaa", str = "asdasdasdasd"
输出: true示例3:
输入: pattern = "aabb", str = "xyzabcxzyabc"
输出: false提示:
你可以默认 pattern 和 str 都只会包含小写字母。

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

2. 解题

class Solution {unordered_map<char, string> m;unordered_map<string, char> str_char;bool match = false;
public:bool wordPatternMatch(string pattern, string str) {dfs(pattern, str, 0, 0);return match;}void dfs(string& pattern, string& str, int i, int j){if((i < pattern.size() && j >= str.size())|| (i >= pattern.size() && j < str.size()) || match)return;if(i == pattern.size() && j == str.size()){match = true;return;}if(!m.count(pattern[i])){string val;for(int k = 1; k <= str.size()-j; ++k)//该字符往后匹配多少个字符{val = str.substr(j, k);if(str_char.count(val) && str_char[val] != pattern[i])//"ab","aa"continue;m[pattern[i]] = val;str_char[val] = pattern[i];dfs(pattern, str, i+1, j+k);m.erase(pattern[i]);str_char.erase(val);}}else{string val = m[pattern[i]];int n = val.size();if(str.substr(j, n) != val)return;dfs(pattern, str, i+1, j+n);}}
};

628 ms 52.5 MB


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

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

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

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

相关文章

LeetCode 1548. The Most Similar Path in a Graph(动态规划)

文章目录1. 题目2. 解题1. 题目 We have n cities and m bi-directional roads where roads[i] [ai, bi] connects city ai with city bi. Each city has a name consisting of exactly 3 upper-case English letters given in the string array names. Starting at any city…

UAC执行批处理,进行提示

很简单&#xff0c;直接在批处理文件中前面加入下面这段 echo off:: BatchGotAdmin :------------------------------------- REM --> Check for permissions >nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system…

LeetCode 358. K 距离间隔重排字符串(贪心+优先队列)

文章目录1. 题目2. 解题1. 题目 给你一个非空的字符串 s 和一个整数 k&#xff0c;你要将这个字符串中的字母进行重新排列&#xff0c;使得重排后的字符串中相同字母的位置间隔距离至少为 k。 所有输入的字符串都由小写字母组成&#xff0c;如果找不到距离至少为 k 的重排结果…

LeetCode 1153. 字符串转化(哈希)

文章目录1. 题目2. 解题1. 题目 给出两个长度相同的字符串&#xff0c;分别是 str1 和 str2。请你帮忙判断字符串 str1 能不能在 零次 或 多次 转化后变成字符串 str2。 每一次转化时&#xff0c;将会一次性将 str1 中出现的 所有 相同字母变成其他 任何 小写英文字母&#x…

LeetCode 727. 最小窗口子序列(滑动窗口)

文章目录1. 题目2. 解题1. 题目 给定字符串 S and T&#xff0c;找出 S 中最短的&#xff08;连续&#xff09;子串 W &#xff0c;使得 T 是 W 的 子序列 。 如果 S 中没有窗口可以包含 T 中的所有字符&#xff0c;返回空字符串 “”。 如果有不止一个最短长度的窗口&#x…

GHOSTXP_SP3电脑公司快速安装机版V2013

GHOSTXP_SP3电脑公司快速安装机版V2013下载地址&#xff1a;http://www.xiazaijidi.com/xp/dngs/1.html文件名称:GHOSTXP_SP3电脑公司特别版_V2012_05.iso文件大小:683.74MD5: 6182CC641025BA15AC43689E04ED5961SHA1: D5675FF901CBDCC27FDB9B5DD937DE145FEE8B33CRC32: C5B13EF2…

LeetCode 1035. 不相交的线(最长公共子序列DP)

文章目录1. 题目2. 解题1. 题目 我们在两条独立的水平线上按给定的顺序写下 A 和 B 中的整数。 现在&#xff0c;我们可以绘制一些连接两个数字 A[i] 和 B[j] 的直线&#xff0c;只要 A[i] B[j]&#xff0c;且我们绘制的直线不与任何其他连线&#xff08;非水平线&#xff0…

LeetCode MySQL 1549. The Most Recent Orders for Each Product

文章目录1. 题目2. 解题1. 题目 Table: Customers ------------------------ | Column Name | Type | ------------------------ | customer_id | int | | name | varchar | ------------------------ customer_id is the primary key for this table. T…

软件外包平台用例图

简要概括软件外包平台主要的用例以及其用例描述、类图、时序图、 用例图如下&#xff1a; 用例描述如下&#xff1a; “注册”用例描述 标题 说明 用例名称 注册 用例标识号 1 简要说明 使用此平台先进行注册成为用户 前置条件 无 基本事件流 1.判断用户注册的信息…

LeetCode 473. 火柴拼正方形(回溯)

文章目录1. 题目2. 解题1. 题目 还记得童话《卖火柴的小女孩》吗&#xff1f;现在&#xff0c;你知道小女孩有多少根火柴&#xff0c;请找出一种能使用所有火柴拼成一个正方形的方法。 不能折断火柴&#xff0c;可以把火柴连接起来&#xff0c;并且每根火柴都要用到。 输入为…

web基础编程-图片管理网站

图片艺廊管理网站说明 数据库设计&#xff1a; 主要由三张表&#xff1a;用户表、图片表、用户图片对应关系表。 用户表&#xff1a; 主要字段如下&#xff1a; 用户ID 整型 主键 自增长&#xff1b; 用户姓名 字符型 &#xff1b; 用户密码 字符型 &…

HDOJ 1494 跑跑卡丁车

跑跑卡丁车Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1778 Accepted Submission(s): 583Problem Description跑跑卡丁车是时下一款流行的网络休闲游戏&#xff0c;你可以在这虚拟的世界里体验驾驶的乐趣。…

LeetCode 375. 猜数字大小 II(DP)

文章目录1. 题目2. 解题1. 题目 我们正在玩一个猜数游戏&#xff0c;游戏规则如下&#xff1a; 我从 1 到 n 之间选择一个数字&#xff0c;你来猜我选了哪个数字。 每次你猜错了&#xff0c;我都会告诉你&#xff0c;我选的数字比你的大了或者小了。 然而&#xff0c;当你猜…

网络命令使用

实验目的 1&#xff0e;掌握基本的网络命令&#xff0c;并了解其在网络领域的作用。 2&#xff0e;学习使用网络命令&#xff0c;并了解其参数的含义。 实验要求 1&#xff0e;要求不仅能会使用网络命令&#xff0c;并能在实际网络操作中灵活运用。 2&#xff0e;能将基本…

LeetCode 546. 移除盒子(DP)*

文章目录1. 题目2. 解题1. 题目 给出一些不同颜色的盒子&#xff0c;盒子的颜色由数字表示&#xff0c;即不同的数字表示不同的颜色。 你将经过若干轮操作去去掉盒子&#xff0c;直到所有的盒子都去掉为止。 每一轮你可以移除具有相同颜色的连续 k 个盒子&#xff08;k > …

配置VLAN以及配置VTP;

实验目的 配置VLAN; 通过VLAN Trunk配置跨交换机的VLAN; 配置VTP; 查看上述配置项目的有关信息。 设备需求 本实验需要以下设备&#xff1a; Cisco Catalyst 2950系列交换机2台&#xff0c;型号不限; 交叉线序网线1条; 1台带有超级终端程序的PC机&#xff0c;以及Cons…

LeetCode 1140. 石子游戏 II(DP)*

文章目录1. 题目2. 解题1. 题目 亚历克斯和李继续他们的石子游戏。许多堆石子 排成一行&#xff0c;每堆都有正整数颗石子 piles[i]。游戏以谁手中的石子最多来决出胜负。 亚历克斯和李轮流进行&#xff0c;亚历克斯先开始。最初&#xff0c;M 1。 在每个玩家的回合中&…

LeetCode 1550. 存在连续三个奇数的数组

文章目录1. 题目2. 解题1. 题目 给你一个整数数组 arr&#xff0c;请你判断数组中是否存在连续三个元素都是奇数的情况&#xff1a;如果存在&#xff0c;请返回 true &#xff1b;否则&#xff0c;返回 false 。 示例 1&#xff1a; 输入&#xff1a;arr [2,6,4,1] 输出&…

配置RIP实验

实验目的 掌握RIPv1和v2配置方法 掌握show ip rip database、sh ip protocol命令 掌握debug命令 掌握将RIP的广播更新方式更改为单播方式 设备需求 本实验需要以下设备&#xff1a; 4台2811Cisco路由器&#xff0c;四台都有两个FastEthernet口。 2条双绞线&#xff0c;…

LeetCode 1551. 使数组中所有元素相等的最小操作数(等差数列)

文章目录1. 题目2. 解题1. 题目 存在一个长度为 n 的数组 arr &#xff0c;其中 arr[i] (2 * i) 1 &#xff08; 0 < i < n &#xff09;。 一次操作中&#xff0c;你可以选出两个下标&#xff0c;记作 x 和 y &#xff08; 0 < x, y < n &#xff09;并使 arr…