LeetCode - Word Pattern

Question

Link : https://leetcode.com/problems/word-pattern/

Given a pattern and a string str, find if str follows the same pattern.

Here follow means a full match, such that there is a bijection between a letter in pattern and a non-empty word in str.

Examples:

pattern = “abba”, str = “dog cat cat dog” should return true.
pattern = “abba”, str = “dog cat cat fish” should return false.
pattern = “aaaa”, str = “dog cat cat dog” should return false.
pattern = “abba”, str = “dog dog dog dog” should return false.

Notes:
You may assume pattern contains only lowercase letters, and str contains lowercase letters separated by a single space.

Code

额,感觉是一个很常规的实现。(C++ : 0ms..这个可能是用例太少,通过用时比较少)

class Solution {
public:
    bool wordPattern(string pattern, string str) {
        string temp;
        vector<string> slist;
        stringstream ss(str);
        while(ss >> temp) slist.push_back(temp);
        if(slist.size() != pattern.size()) return false;

        map<char, string> stable;
        map<char, string>::iterator it;
        map<string, bool> wtable;
        map<string, bool>::iterator wit;
        for(int i = 0; i < pattern.size(); i++){
            it = stable.find(pattern[i]);
            if(it != stable.end()){
                if(slist[i].compare(it->second) != 0)
                    return false;
            }
            else{
                wit = wtable.find(slist[i]);
                if(wit != wtable.end()) 
                    return false;
                wtable.insert(pair<string, bool>(slist[i], true));
                stable.insert(pair<char, string>(pattern[i], slist[i]));
            }
        }
        return true;
    }
};
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值