zoukankan      html  css  js  c++  java
  • leetcode Word Pattern

    题目连接

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

    Word Pattern

    Description

    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.

    class Solution {
    public:
    	bool wordPattern(string pattern, string str) {
    		unordered_map<string, char> A;
    		unordered_map<char, string> B;
    		size_t p, i, j = 0, n = pattern.length();
    		for (i = 0; i < n; i++) {
    			char &ch = pattern[i];
    			p = str.find(' ', j);
    			string ret = str.substr(j, p - j);
    			if (A.find(ret) == A.end()) A[ret] = ch;
    			else if (A[ret] != ch) return false;
    			if (B.find(ch) == B.end()) B[ch] = ret;
    			else if (B[ch] != ret) return false;
    			j = p + 1;
    		}
    		return i == pattern.size() && p == string::npos;
    	}
    };
  • 相关阅读:
    Mint linux中调整屏幕亮度的方法
    poj 1085 Triangle War (状压+记忆化搜索)
    CF1060F Shrinking Tree
    leetcode492
    leetcode258
    leetcode226
    leetcode371
    leetcode104
    leetcode389
    leetcode448
  • 原文地址:https://www.cnblogs.com/GadyPu/p/5020558.html
Copyright © 2011-2022 走看看