Codeforce 890 查詢和替換模式
阿新 • • 發佈:2018-12-03
原題目連結: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;
}
};