CC_1_數組與字符串

1-1 確定一個字符串的字符是否全都不相同。不用額外的數據結構該如何處理?

考慮字符集,ASCII or Unicode

HashMap,空間複雜度O(n),時間複雜度O(1);優化,bit vector

樸素的算法,兩趟遍歷O(n^2),或者,先排序再遍歷O(nlogn)

1-2 實現void reverse(char *str)

two pointers

recursion

1-3 判斷兩個string是否爲anagram(變位詞)

HashMap統計個數

先排序string再比較

1-4 將String中的空格替換爲%20,原數組上操作

先確定新string尾部的位置,然後從後往前複製,O(n)

1-5 壓縮string,eg:aabccc->a2b1c3

考慮新的字符串拼接過程string + string 時間複雜度爲O(n^2),使用stringBuffer優化,string.append(),或者構建一個數組

1-6 給定一個N*N的矩陣表示的圖像,每個像素大小爲4字節,實現一個方法,使之旋轉90度。不用額外空間怎麼做?

按層操作,時間複雜度爲O(n^2),不需要額外的空間,按索引交換4對元素

1-7 M*N的矩陣中,元素爲0所在的行&列,實現清零

建兩個數組指示需要清空的行&列,空間複雜度O(M+N)

不要額外空間的做法,先找到一個0,然後把這個0所在的行&列,看做輔助數組

1-8 判斷s1是否是s2旋轉而成的,只能調用一次isSubstring(檢測字串函數)

s1 = xy,s2 = yx,s1s1 = xyxy

isSubstring(s1s1,s2)

巧妙!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章