C++ 中的單詞模式
假設我們有一個模式和一個字串字串,找到字串是否遵循相同的模式。這裡遵循意味著模式中的一個字母和字串中一個非空單詞之間存在一個雙射。
因此,如果輸入類似於圖案 = "cbbc",字串 = "單詞模式模式單詞」,那麼輸出將為真。
要解決這個問題,我們將按照以下步驟進行操作:-
strcin := str
定義單詞陣列
對於 strcin 中的每個單詞
在 words 末尾插入單詞
定義一個對映 p2i
i := 0
pat := 空字串
對於模式中的 c -
如果 c 不是 p2i 的成員,則 -
(i 增加 1)
p2i[c] := i
pat := pat 連線 p2i[c]
定義一個對映 str2i
i := 0
pat1 := 空白字串
對於 words 中的 c -
如果 c 不是 str2i 的成員,則 -
(i 增加 1)
str2i[c] := i
pat1 := pat1 連線 str2i[c]
當 pat1 與 pat 相同時返回 true
示例 nbsp;
讓我們看看以下實現以更好地理解 -
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
bool wordPattern( string pattern, string str ) {
istringstream strcin(str);
string word;
vector<string> words;
while (strcin >> word)
words.push_back(word);
unordered_map<char, int> p2i;
int i = 0;
string pat = "";
for (auto c : pattern) {
if (p2i.count(c) == 0) {
i++;
p2i[c] = i;
}
pat += to_string(p2i[c]);
}
unordered_map<string, int> str2i;
i = 0;
string pat1 = "";
for (auto c : words) {
if (str2i.count(c) == 0) {
i++;
str2i[c] = i;
}
pat1 += to_string(str2i[c]);
}
return pat1 == pat;
}
};
main(){
Solution ob;
cout << (ob.wordPattern("cbbc", "word pattern pattern word"));
}輸入
"cbbc", "word pattern pattern word"
輸出
1
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP