參考資料
給定一種規律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...