zoukankan      html  css  js  c++  java
  • [Leetcode] 第290题 单词模式

    一、题目描述

    给定一种 pattern(模式) 和一个字符串 str ,判断 str 是否遵循相同的模式。

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

    示例1:

    输入: pattern = "abba", str = "dog cat cat dog"
    输出: true

    示例 2:

    输入:pattern = "abba", str = "dog cat cat fish"
    输出: false

    示例 3:

    输入: pattern = "aaaa", str = "dog cat cat dog"
    输出: false

    示例 4:

    输入: pattern = "abba", str = "dog dog dog dog"
    输出: false

    二、题目分析

    题目比较简单,注意两点

    1)需要建立字母和单词一一对应的关系

    2)注意用空格分割字符串的时候,最后一个单词后面没有空格

    三、代码

     1 class Solution {
     2 public:
     3     bool wordPattern(string pattern, string str) {
     4         if (pattern == "")return false;
     5         map<char, string>mp1;
     6         map<string, char>mp2;//一一对应
     7         vector<string>vs;
     8         int i;
     9         string s = "";
    10         for (i = 0; i < str.size(); ++i) {
    11             if (str[i] == ' ') {
    12                 if (s != "")vs.push_back(s);
    13                 s = "";
    14             }
    15             else s += str[i];
    16         }
    17         if (s != "")vs.push_back(s);//注意最后一个单词
    18         if (pattern.size() != vs.size())return false;
    19         for (i = 0; i < pattern.size(); ++i) {
    20             cout << vs[i] << " ";
    21             if (mp1.find(pattern[i]) != mp1.end()) {
    22                 if (mp1[pattern[i]] != vs[i])return false;
    23             }
    24             else mp1[pattern[i]] = vs[i];
    25             if (mp2.find(vs[i]) != mp2.end()) {
    26                 if (mp2[vs[i]] != pattern[i])return false;
    27             }
    28             else mp2[vs[i]] = pattern[i];
    29         }
    30         return true;
    31     }
    32 };
  • 相关阅读:
    [原创]什么是安全性测试
    [原创]如何有效的考核测试人员
    [原创]MySql官方压力测试工具Mysqlslap
    [原创软件测试工作技能
    [原创]如何有效构建测试环境
    [原创]常见系统测试类型总结
    [原创]Kjava手机顽童模拟器
    [原创]浅谈测试人员提交缺陷记录
    [原创]Windows/Unix 资源性能计数器
    [原创]戴明PDCA方法
  • 原文地址:https://www.cnblogs.com/zhizhiyu/p/10176142.html
Copyright © 2011-2022 走看看