2020 11 02每天一刷

2021-10-10 04:31:14 字數 3546 閱讀 2385

給定一種規律 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

;int pos =0;

s.push_back

(' ');

//加乙個空格是為了更好的分割字串單詞

for(

int i =

0; ilength()

;++i)

if(word_map.

find

(word)

== word_map.

end())

word_map[word]

= pattern[pos]

;//新增該單詞,並將pattern對應的字元其置1

used[pattern[pos]]=

1;}else

} word ="";

++pos;

}else}if

(pos != pattern.

length()

)return

true;}

};

給定乙個字串陣列,將字母異位片語合在一起。字母異位詞指字母相同,但排列不同的字串。

示例:輸入: [「eat」, 「tea」, 「tan」, 「ate」, 「nat」, 「bat」]

輸出:[

[「ate」,「eat」,「tea」],

[「nat」,「tan」],

[「bat」]

]說明:

所有輸入均為小寫字母。

不考慮答案輸出的順序。

思路:在遍歷字串的時候,呼叫sort排序,把排後的字串作為雜湊表的key,把對應的符合要求的字串新增進value(vector型別的值)

**如下:

class

solution

anagram[str]

.push_back

(strs[i]);

}for

(auto it = anagram.

begin()

; it != anagram.

end();

++it)

return result;}}

;

class

solution

for(

int i=

0;isize()

;++i )

}public

: vector>

groupanagrams

(vector

& strs)

anagram[vec]

.push_back

(strs[i]);

}for

(auto it = anagram.

begin()

;it != anagram.

end();

++it)

return result;}}

;

給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。

示例 1:

輸入: 「abcabcbb」

輸出: 3

解釋: 因為無重複字元的最長子串是 「abc」,所以其長度為 3。

示例 2:

輸入: 「bbbbb」

輸出: 1

解釋: 因為無重複字元的最長子串是 「b」,所以其長度為 1。

示例 3:

輸入: 「pwwkew」

輸出: 3

解釋: 因為無重複字元的最長子串是 「wke」,所以其長度為 3。

請注意,你的答案必須是 子串 的長度,「pwke」 是乙個子串行,不是子串。

思路:見注釋

**如下:

class

solution

;for

(int i =

0;ilength()

;++i)

}else

word ="";

//重新更新word

for(

int j = begin;j<=i;

++j)}}

return result;}}

;

給定兩個陣列,編寫乙個函式來計算它們的交集。

示例 1:

輸入:nums1 = [1,2,2,1], nums2 = [2,2]

輸出:[2]

示例 2:

輸入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]

輸出:[9,4]

說明:

輸出結果中的每個元素一定是唯一的。

我們可以不考慮輸出結果的順序。

思路: 將陣列分別遍歷,新增進兩個雜湊表中。然後遍歷較小的那乙個,看在另乙個雜湊表中是否存在,存在的話就新增進結果中去。

class

solution

vector<

int> result;

for(

auto

& it : set1)

}return result;

}public

: vector<

int>

intersection

(vector<

int>

& nums1, vector<

int>

& nums2)

for(

auto

& it : nums2)

return

getinsection

(set1,set2);}

};

思路:排序加雙指標

**如下:

class

solution

index1++

; index2++;}

else

if(num1 < num2)

else

}return intersection;}}

;

每天一刷20200602

問題 寫出乙個程式,接受乙個正浮點數值,輸出該數值的近似整數值。如果小數點後數值大於等於5,向上取整 小於5,則向下取整。思路 其實就是實現乙個正浮點數的四捨五入,可以呼叫math.h中的round 函式直接完成,有點討巧。include include using namespace std in...

每天一刷20200603

問題 編寫乙個函式,計算字串中含有的不同字元的個數。字元在acsii碼範圍內 0 127 換行表示結束符,不算在字元裡。不在範圍內的不作統計。注意是不同的字元 思路 跟之前做過的乙個題相似,那個題是字串去重,稍作修改就行了。include include using namespace std in...

每天一刷20200605

昨天返校,沒有做題。問題 功能 等差數列 2,5,8,11,14 輸入 正整數n 0 輸出 求等差數列前n項和 返回 轉換成功返回 0 非法輸入與異常返回 1 思路 這個題其實就是簡單的等差數列求和,設定好初始項,然後控制好迴圈次數即可。ps 在處理輸入的時候要注意用while 來讀取輸入,不然提交...