題目:
給定兩個句子 a 和 b 。 (句子是一串由空格分隔的單詞。每個單詞僅由小寫字母組成。)
如果乙個單詞在其中乙個句子中只出現一次,在另乙個句子中卻沒有出現,那麼這個單詞就是不常見的。
返回所有不常用單詞的列表。
您可以按任何順序返回列表。
示例 1:
理解:
這是一道簡單題目,但是很多地方需要鞏固,故記錄!
思路很簡單:
1.將句子分割成乙個乙個的單詞;
2.統計a和b句子中的各單詞數量;
3.尋找其不常見單詞。
主要的問題是,如何分割,想到的是split函式,但是c++中如何分割?另外,通緝單次的數量,我們常用的是map結構,如何做?
strtok函式
strtok()用來將字串分割成乙個個片段。引數s指向欲分割的字串,引數delim則為分割字串中包含的所有字元。當strtok()在引數s的字串中發現引數delim中包含的分割字元時,則會將該字元改為\0 字元。在第一次呼叫時,strtok()必需給予引數s字串,往後的呼叫則將引數s設定成null。每次呼叫成功則返回指向被分割出片段的指標。
該函式包含在"string.h"標頭檔案中
函式原型:
char* strtok (char* str,constchar* delimiters );函式功能:切割字串,將str切分成乙個個子串
函式引數:
str:在第一次被呼叫的時間str是傳入需要被切割字串的首位址;在後面呼叫的時間傳入null。
delimiters:表示切割字串(字串中每個字元都會 當作分割符)。
函式返回值:
當s中的字元查詢到末尾時,返回null;
如果查不到delimiter所標示的字元,則返回當前strtok的字串的指標。
插曲:
string和char陣列的相互轉換:
而char陣列轉換成string型別,可以直接複製
類似於 a = a1;
使用的時候,處理的字元必須是乙個char陣列型別,並且不能是指標;
統計的時候,只許設計兩個map,分別為map,注意,map中是不可以定義指標型別的,因此,map是不對的!
最後在計算的時候,遍歷a和b的map中是否符合,用乙個vector進行記錄結果即可!
具體**如下:
1 #include2 #include記錄,以供學習~~~3 #include 4 #include 5
using
namespace
std;
6int
main()
729 tokenptr = strtok(b1, "
");//
sentence必須是乙個char陣列,不能是定義成指標形式
30while (tokenptr !=null)
34//
對比35
//mapma和mb中的不常用單詞
36 map::iterator it;
37for (it = ma.begin(); it != ma.end(); it++)
3842
43for (it = mb.begin(); it != mb.end(); it++)
4448
49//
輸出結果
50for (int i = 0; i < res.size(); i++)
5154 }
LeetCode 884 兩句話中的不常見單詞
給定兩個句子 a 和 b 句子是一串由空格分隔的單詞。每個單詞僅由小寫字母組成。如果乙個單詞在其中乙個句子中只出現一次,在另乙個句子中卻沒有出現,那麼這個單詞就是不常見的。返回所有不常用單詞的列表。您可以按任何順序返回列表。示例 1 輸入 a b 輸出 sweet sour 示例 2 輸入 a b ...
leetcode 884 兩句話中的不常見單詞
給定兩個句子 a 和 b 句子是一串由空格分隔的單詞。每個單詞僅由小寫字母組成。如果乙個單詞在其中乙個句子中只出現一次,在另乙個句子中卻沒有出現,那麼這個單詞就是不常見的。返回所有不常用單詞的列表。您可以按任何順序返回列表。示例 1 輸出 sweet sour 示例 2 輸出 banana 乙個句子...
LeetCode884 兩句話中的不常見單詞
非商業,leetcode鏈結附上 進入正題。題目 給定兩個句子 a 和 b 句子是一串由空格分隔的單詞。每個單詞僅由小寫字母組成。如果乙個單詞在其中乙個句子中只出現一次,在另乙個句子中卻沒有出現,那麼這個單詞就是不常見的。返回所有不常用單詞的列表。您可以按任何順序返回列表。示例 示例 1 0 a.l...