單詞規律(word pattern)

2021-10-01 22:39:07 字數 3949 閱讀 6928

參考資料

給定一種規律pattern和乙個字串str,判斷str是否遵循相同的規律。

這裡的 遵循 指完全匹配,例如,pattern裡的每個字母和字串str中的每個非空單詞之間存在著雙向連線的對應規律。

示例1:

輸入: pattern = "abba", str = "dog cat cat dog"

輸出: true

示例 2:

輸入:pattern = "abba", str = "dog cat cat fish"

輸出: false

示例 3:

輸入: pattern = "aaaa", str = "dog cat cat dog"

輸出: false

示例 4:

輸入: pattern = "abba", str = "dog dog dog dog"

輸出: false

說明:

你可以假設 pattern 只包含小寫字母, str 包含了由單個空格分隔的小寫字母。

class

solution

;//已被對映的pattern字元

std::string word;

//臨時儲存拆分出的單詞

int pos =0;

//當前指向的pattern字元 (無需特殊處理最後乙個單詞了))

str.

push_back

(' ');

//str尾部push 乙個空格,使得遇到空格拆分單詞

for(

int i =

0; ilength()

; i++

)//若單詞未出現在雜湊對映中

if(word_map.

find

(word)

== word_map.

end())

word_map[word]

= pattern[pos]

; used[pattern[pos]]=

1;}else

} word ="";

pos++;}

else}if

(pos != pattern.

length()

)return

true;}

};

執行用時 :

4 ms, 在所有 c++ 提交中擊敗了69.06%的使用者

記憶體消耗 :

8.5 mb, 在所有 c++ 提交中擊敗了65.65%的使用者

mapint>mapstring;         map<

int,string >mapint;

mapchar

>mapstring; map<

char

,string>mapchar;

map<

char

,int

>mapchar; map<

int,

char

>mapint;

第三種新增資料的方法是上面**用到的。

map<

int,string> maplive;

1.maplive.

insert

(pair<

int,string>

(102

,"aclive"))

;2.maplive.

insert

(map<

int,string>

::value_type

(321

,"hai"))

;3.maplive[

112]

="april"

;//map中最簡單最常用的插入新增!

find()函式返回乙個迭代器指向鍵值為key的元素,如果沒找到就返回指向map尾部的迭代器。

map<

int,string >

::iterator l_it;

; l_it=maplive.

find

(112);

if(l_it==maplive.

end())

cout<<

"we do not find 112"

"wo find 112"

<

map<

int,string >

::iterator l_it;

;

l_it=maplive.

find

(112);

if(l_it==maplive.

end())

cout<<

"we do not find 112"

erase

(l_it)

;//delete 112;

map中的swap不是乙個容器中的元素交換,而是兩個容器交換;

示例:

#include

#include

using

namespace std;

intmain()

map中的元素是自動按key公升序排序,所以不能對map用sort函式:

示例:

#include

#include

using

namespace std;

intmain()

c++ maps是一種關聯式容器,包含「關鍵字/值」對

begin

() 返回指向map頭部的迭代器

clear

() 刪除所有元素

begin

() 返回指向map頭部的迭代器

clear

() 刪除所有元素

count

() 返回指定元素出現的次數

empty

() 如果map為空則返回true

end(

) 返回指向map末尾的迭代器

equal_range

() 返回特殊條目的迭代器對

erase

() 刪除乙個元素

find

() 查詢乙個元素

get_allocator

() 返回map的配置器

insert

() 插入元素

key_comp

() 返回比較元素key的函式

lower_bound

() 返回鍵值》=給定元素的第乙個位置

max_size

() 返回可以容納的最大元素個數

rbegin

() 返回乙個指向map尾部的逆向迭代器

rend

() 返回乙個指向map頭部的逆向迭代器

size

() 返回map中元素的個數

swap

() 交換兩個map

upper_bound

() 返回鍵值》給定元素的第乙個位置

value_comp

() 返回比較元素value的函式

c++ map用法

單詞規律

290Word Pattern單詞模式

給定一種 pattern 模式 和乙個字串 str 判斷 str 是否遵循相同的模式。這裡的遵循指完全匹配,例如,pattern 裡的每個字母和字串 str 中的每個非空單詞之間存在著雙向連線的對應模式。示例1 輸入 pattern abba str dog cat cat dog 輸出 true ...

Leetcode 單詞規律

63.單詞規律 題目內容 及思路 include include include includeusing namespace std class solution if i str.size 1 對於最後乙個字串 如果個數不一樣,肯定不匹配 if pattern.size str1.size re...

290 單詞規律

給定一種規律 pattern 和乙個字串 str 判斷 str 是否遵循相同的規律。這裡的 遵循 指完全匹配,例如,pattern 裡的每個字母和字串 str 中的每個非空單詞之間存在著雙向連線的對應規律。示例1 輸入 pattern abba str dog cat cat dog 輸出 true...