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

算法-单词规律(290)

leetcode题目链接 

这道题用哈希表来解决 一个哈希表存放从单词到字符的映射,一个存放从字符到单词的映射,依照空格分隔字符,并将每个字符存放到vector字符数组,

遍历 pattern,对于每个字符 c 和对应的单词 w

检查 charToWord 中是否已经存在映射,若存在且不匹配则返回 false

检查 wordToChar 中是否已经存在映射,若存在且不匹配则返回 false

否则,建立新的映射。

遍历结束没有发现不匹配,则返回true。

代码如下:

class Solution {
public:bool wordPattern(string pattern, string s) {unordered_map<char, string> charToWord;unordered_map<string, char> wordToChar;vector<string> words;int pos = 0, start = 0;// 用空格分割字符串 swhile ((pos = s.find(' ', start)) != string::npos) {words.push_back(s.substr(start, pos - start));start = pos + 1;}words.push_back(s.substr(start));// 如果单词数量和模式长度不匹配,返回 falseif (words.size() != pattern.length()) {return false;}for (int i = 0; i < pattern.length(); ++i) {char c = pattern[i];string w = words[i];// 检查字符是否已映射到某个单词if (charToWord.find(c) != charToWord.end()) {if (charToWord[c] != w) {return false; // 不匹配返回 false}} else {charToWord[c] = w; // 新映射}// 检查单词是否已映射到某个字符if (wordToChar.find(w) != wordToChar.end()) {if (wordToChar[w] != c) {return false; // 不匹配返回 false}} else {wordToChar[w] = c; // 新映射}}return true;}
};

这里的s.find('',start)即从start的位置找到第一个空格的位置。

string::npos 是一个常数,表示查找操作未找到时的返回值。它通常用于判断 find 方法是否成功找到指定字符或子字符串。如果 find 返回 string::npos,意味着未找到。


http://www.mrgr.cn/news/11774.html

相关文章:

  • 大模型企业应用落地系列》基于大模型的对话式推荐系统》技术架构设计全攻略
  • USB设备驱动代码分析(鼠标)
  • 【yarn publish : 报错 passed folder/tarball doesn‘t exist 】
  • 【SQL】连续出现的数字
  • LabVIEW高速数据采集关键问题
  • 网络基础知识:理解核心概念与技术
  • 通过css,js html结合实现第一个页面
  • Java常用API(Math,System,Runtime)
  • 上ERP就能数字化转型吗?数字化转型到底转什么?
  • 【C#】【EXCEL】Bumblebee/Classes/ExGraphic.cs
  • Ubuntu下部署Hadoop集群+Hive(三)
  • 【从问题中去学习k8s】k8s中的常见面试题(夯实理论基础)(十四)
  • 【dotnet】Ubuntu 24.04安装dotnet 8.0报错
  • Java笔试面试题AI答之线程(4)
  • Qt的事件循环
  • 新160个crackme - 041-genocide1
  • Servlet
  • linux 安装kafaka单体服务
  • 每日一问:GET请求和POST请求的区别
  • 仓颉语言:静态类型与垃圾收集,让编程更安全高效