当前位置: 首页 > news >正文

leetcode 291. Word Pattern II和290. Word Pattern

目录

291. Word Pattern II

290. Word Pattern


291. Word Pattern II

回溯法+哈希表

class Solution {unordered_map<char,string> hashmap;unordered_set<string> wordset;
public:bool wordPatternMatch(string pattern, string s) {return backtrack(pattern,0,s,0);}bool backtrack(const string& pattern,int pi,const string&s,int si){if(pi == pattern.size())return si == s.size();char c = pattern[pi];if(hashmap.contains(c)){string &word = hashmap[c];if((si+word.size() > s.size()) || (s.substr(si,word.size()) != word))return false;return backtrack(pattern,pi+1,s,si+word.size());}for(int k = si;k < s.size();k++){string newword = s.substr(si,k-si+1);if(wordset.contains(newword))continue;hashmap[c] = newword;wordset.insert(newword);if(backtrack(pattern,pi+1,s,k+1))return true;hashmap.erase(c);wordset.erase(newword);}return false;}
};

290. Word Pattern

哈希

class Solution {
public:bool wordPattern(string pattern, string s) {vector<string> strvec;int slen = s.size();int start = 0;int len = 0;for(int i = 0;i <slen;i++){if(s[i] != ' '){len++;}else{strvec.push_back(s.substr(start,len));start=i+1;len = 0;}}strvec.push_back(s.substr(start,len));int pattern_len = pattern.size();if(pattern_len != strvec.size())return false;unordered_map<char,string> pattern2str;unordered_map<string,char> str2pattern;for(int i = 0; i<pattern_len;i++){if((pattern2str.contains(pattern[i])&&pattern2str[pattern[i]]!=strvec[i]) ||(str2pattern.contains(strvec[i])&&str2pattern[strvec[i]]!=pattern[i]) )return false;pattern2str[pattern[i]] = strvec[i];str2pattern[strvec[i]] = pattern[i];}return true;}
};

用stringstream分割字符串

class Solution {
public:bool wordPattern(string pattern, string s) {vector<string> strvec;string word;stringstream ss(s);while(ss>>word)strvec.emplace_back(word);int pattern_len = pattern.size();if(pattern_len != strvec.size())return false;unordered_map<char,string> pattern2str;unordered_map<string,char> str2pattern;for(int i = 0; i<pattern_len;i++){if((pattern2str.contains(pattern[i])&&pattern2str[pattern[i]]!=strvec[i]) ||(str2pattern.contains(strvec[i])&&str2pattern[strvec[i]]!=pattern[i]) )return false;pattern2str[pattern[i]] = strvec[i];str2pattern[strvec[i]] = pattern[i];}return true;}
};
http://www.lryc.cn/news/572756.html

相关文章:

  • Vue 比较两个数组对象,页面展示差异数据值
  • AS32A601与ASM1042芯片在电力系统自动化监控中的应用效能分析
  • PROFIBUS DP 转 EtherCAT 网关:冶金自动化高效协同的基石
  • TypeScript 自定义类型
  • MySQL DATETIME类型存储空间详解:从8字节到5字节的演变
  • Kotlin 中ArrayList、listOf、arrayListOf 和 mutableListOf区别
  • Nginx+Tomcat负载均衡群集
  • 【FineDance】Batch Size对训练的影响分析
  • 20250620-Pandas.cut
  • aws(学习笔记第四十五课) route53-failover
  • 资本赋能鈤励科技,建筑数字化项目引领行业变革新趋势
  • Docker 容器技术入门与环境部署
  • MATLAB基于可拓云模型的公路路面性能评价模型
  • 基于大模型的三叉神经痛预测及治疗方案研究报告
  • Postgresql 表结构、列名相关信息查询
  • Unix、Linux、POSIX、Minix 区别与联系
  • 小菜狗的云计算之旅,shell脚本语言的基本内容和用法
  • wireshark过滤显示rtmp协议
  • 服务器获取外网IP,并发送到钉钉
  • 力扣-136.只出现一次的数字
  • 【MATLAB代码】制导方法介绍与例程——追踪法,适用于二维平面,目标是移动的|附完整源代码
  • java项目打包成jar包,并给jmeter使用
  • Lora训练
  • Maven 之工程化开发核心指南:插件配置、pom 文件与依赖管理
  • 一生一芯 PA2 RTFSC
  • Nginx-Ingress-Controller自定义端口实现TCP/UDP转发
  • js 生成过控制点的曲线
  • 数据库part2---子查询
  • 学习笔记丨AR≠VR:透视沉浸式技术的“虚实象限”法则
  • JuiceFS 集群部署详细指南:使用 SeaweedFS 作为数据存储,ETCD 作为元数据存储