1. 程式人生 > >Codeforce 890 查詢和替換模式

Codeforce 890 查詢和替換模式

原題目連結:CodeForce890


分類

Codeforce 字串


題意

模式匹配

你有一個單詞列表 words 和一個模式 pattern,你想知道 words 中的哪些單詞與模式匹配。

如果存在字母的排列 p ,使得將模式中的每個字母 x 替換為 p(x) 之後,我們就得到了所需的單詞,那麼單詞與模式是匹配的。


樣例輸入輸出


輸入:words = ["abc","deq","mee","aqq","dkd","ccc"], pattern = "abb"
輸出:["mee","aqq"]
解釋:
"mee" 與模式匹配,因為存在排列 {a -> m, b -> e, ...}。
"ccc" 與模式不匹配,因為 {a -> c, b -> c, ...} 不是排列。
因為 a 和 b 對映到同一個字母。

想法

判斷是否匹配函式strMatch,由於題目已知單詞長度相同,只需判斷在相同的位置,兩個單詞要有相同的相等或者不等關係即可。


程式碼

12ms

/**
 * Author: GatesMa
 * Email: [email protected]
 * Todo: ACM Training
 * Date:2018/11/29
 */
class Solution {
public:
    bool strMatch(string str, string pattern){
        int len = str.length();
        for
(int i=0;i < len;i++){ for(int j=i+1;j < len;j++){ if((str[i] == str[j]) && (pattern[i] != pattern[j])) return false; if((str[i] != str[j]) && (pattern[i] == pattern[j])) return false; } } return true; }
vector<string> findAndReplacePattern(vector<string>& words, string pattern) { vector<string> set; for(int i=0;i < words.size();i++){ if(strMatch(words[i], pattern)){ set.push_back(words[i]); } } return set; } };