• 算法题:单词规律


    描述

    给定一种规律 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
    说明:
    你可以假设 pattern 只包含小写字母, str 包含了由单个空格分隔的小写字母。

    链接:https://leetcode-cn.com/problems/word-pattern

    思路

    利用hash存储pattern的每个字母c和s每个单词v的对应关系,相同的c应该有相同的v,注意细节即可。

    代码

    class Solution {
    public:
        bool wordPattern(string pattern, string s) {
            unordered_map<char, string> hash;
            unordered_set<string> values;
            int start = 0;
            for (const char& c : pattern) {
                int i = start;
                while (i < s.size() && s[i] != ' ') i++;
                if (i > s.size()) return false;
                string v = s.substr(start, i - start);
                start = i + 1;
                if (hash.find(c) == hash.end()) {
                    if (values.find(v) != values.end()) return false;
                    hash[c] = v;
                    values.insert(v);
                } else {
                    if (hash[c] != v) return false;
                }
            }
            return start > s.size();
        }
    };
    

    复杂度
    时间复杂度:O(N)
    空间复杂度:O(N)

  • 相关阅读:
    elasticsearch客户端连接选择
    logstash5.x配置
    git操作
    Linux的crontab
    让MySQL支持中文
    Python装饰器(decorator)
    Python类的探讨
    Python对象(译)
    Python基础-作用域和命名空间(Scope and Namespace)
    Python输入输出(IO)
  • 原文地址:https://www.cnblogs.com/dinjufen/p/14146629.html
Copyright © 2020-2023  润新知