Leetcodeブラシ87-409.最长回文串(C++详细解法!!)
10217 ワード
Come from : [https://leetcode-cn.com/problems/word-pattern/]
290. Word Pattern 1.Question 2.Answer 3.私の収穫 1.Question
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.
Example 1 :
Example 2 :
Example 3 :
Example 4 :
Note:
2.Answer
easyタイプタイトル(easyではないような気がします).文字ハッシュ表を使います.以下は構想ですが、私のコードにも詳細な注釈があり、皆さんに共有します.
例を分析し、法則をまとめる. strはpattern数と同じ str単語を1つ解体する場合、strに既に単語が出現する場合、その単語に対応するpattern文字は、かつて対応していたpattern文字 でなければならない. str単語を分解する場合、strに単語が現れない場合、その単語に対応するpattern文字が現れないことは明らかでなければならない.これはその強いマッピング関係であり、本題ではstr---patternのマッピング を考慮する.
アルゴリズムの考え方:str=“dog cat*”pattern=“abb?”単語strからpattern’へのハッシュマッピングを設定し、配列used[128]を使用してpattern文字が を使用するかどうかを記録する. strを巡回し、スペースに従って単語を分割するとともに、patternを移動するポインタに対応し、ハッシュテーブルに単語が現れなかった場合:patternのusedが使用された場合、falseは現在の単語がpatternにマッピングされ、usedタグが使用されない場合、現在のハッシュテーブルの単語マッピングがpattern文字を指していない場合、false str pattern数がfalseに一致しないのは全体的に言えば、2つの集合を同時に遍歴し、マッピングとして現れず、判断として現れたことがあり、すべて遍歴してから数を見ることだ.
MACコードは以下の通りである.
3.私の収穫
感覚はやはり系統的に知識を身につけなければならない...例えば今回のハッシュ表day 2...系統的に勉強してから、もっと上手に運用することができます.
2019/5/26胡雲雲は南京で87
290. 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.
Example 1 :
Input: pattern = "abba", str = "dog cat cat dog"
Output: true
Example 2 :
Input:pattern = "abba", str = "dog cat cat fish"
Output: false
Example 3 :
Input: pattern = "aaaa", str = "dog cat cat dog"
Output: false
Example 4 :
Input: pattern = "abba", str = "dog dog dog dog"
Output: false
Note:
You may assume pattern contains only lowercase letters, and str contains lowercase letters that may be separated by a single space.
2.Answer
easyタイプタイトル(easyではないような気がします).文字ハッシュ表を使います.以下は構想ですが、私のコードにも詳細な注釈があり、皆さんに共有します.
例を分析し、法則をまとめる.
アルゴリズムの考え方:str=“dog cat*”pattern=“abb?”
MACコードは以下の通りである.
class Solution {
public:
bool wordPattern(string pattern, string str) {
map<string, char> word_map;
char used[128] = {0}; // pattern
int pos = 0; // , pattern
string word; //
str.push_back(' '); // ,
for(int i = 0; i < str.length(); ++i)
{
if(str[i] == ' ')
{
// :
// 1 pattern str , : ,pattern 。 :str=“dog fish” pattern=“a”
if(pos == pattern.length())
{
return false;
}
// 2.
if(word_map.find(word) == word_map.end())
{
// 2.1 . , false
if(used[pattern[pos]]) // :str=“dog cat cat fish”, pattern=“abba”
{
return false;
}
// 2.2 ,
word_map[word] = pattern[pos];
used[pattern[pos]] = 1;
}
else //3.
{
// 3.1 word , pattern , fasle
if(word_map[word] != pattern[pos])
{
return false; // :str=“dog cat cat fish”, pattern=“abca”
}
}
word = ""; // , word
++pos; // pattern
}
else
{
word += str[i];
}
}
//4 pattern 。 :str=“dog”, pattern=“aab”
if(pos != pattern.length())
{
return false;
}
return true;
}
};
3.私の収穫
感覚はやはり系統的に知識を身につけなければならない...例えば今回のハッシュ表day 2...系統的に勉強してから、もっと上手に運用することができます.
2019/5/26胡雲雲は南京で87