陪suki去coffee chat丢烘,出去走了走,還上了willis tower些椒,然而下雨播瞳,全都被云擋住了,好不容易有點(diǎn)風(fēng)免糕,把云撥開了赢乓,剛想擺個(gè)pose,另一片云又來了石窑。牌芋。。
Reverse String
沒什么好說的松逊,兩個(gè)指針Reverse Words in a String
I love yahoo --> yahoo love I
先reverse一下整個(gè)String
然后再以空格為界躺屁,用兩個(gè)指針確定單一word,reverse單一word
Right Shift By N Characters
abcdef k = 4 -> abcd | ef -> dcba | fe -> ef | abcd
同上題经宏,先reverse拆分部分犀暑,再reverse所有
type5 char replacement
ex. "student" -> "stuxxt" (den -> xx) s1 to s2
two pointer
case1: s1.length() >= s2.length()
照常兩個(gè)pointer來做
case2:s1.length() < s2.length() (string的長度會(huì)超出原來的)
step1: compute the new length after replacement
step2: use two pointer, moving from right to left to guarantee slow is always behind fast.
String shuffling
ABCDE12345 -> A1B2C3D4E5
分成四份(要考慮奇偶性),是的保證chunk1.size = chunk3.size, chunk2.size = chunk4.size烁兰,將中間兩部分reverse耐亏,最后再merge
String permutation
has duplicate letters
String en/decoding
aaaabccaaaaa -> a4b1c2a5
case1: unchaged/shorter -> # of occ >= 2
case2: longer -> # of occ < 2
兩個(gè)pointer做, 加個(gè)count缚柏,第一遍做case1并保留單個(gè)出現(xiàn)的字符 變成a4bc2a5苹熏,第二遍做case2碟贾,倒著做得出結(jié)果币喧,類似前面的char replacement
Sliding window
也是2pointer轨域,但是物理意義不同,[slow杀餐, fast]中間才是需要的干发,slow前面和fast后面沒用
Longest Substring Without Repeating Characters
為保證沒有重復(fù)char,先用hashset記錄the chars in the sliding window
if str[fast] not in hashset, add it and fast++
if str[fast] in hashset, remove str[slow], slow++Find All Anagrams in a String
fixed length
hashmap to record the count of distinct chars
record matchChars史翘,# of char already matched
需要理清思路枉长,有必要重新寫一遍
今天看的string2 的lec,各個(gè)例題實(shí)在是有難度琼讽,都是onsite級(jí)別的題必峰,思路理解差不多了,但是implement起來還是困難钻蹬,先放一放