Leetcode 884 兩句話中的不常見單詞

2022-05-11 12:29:01 字數 2125 閱讀 2665

題目:

給定兩個句子 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...