給定一種規律 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 來讀取輸入,不然提交...