(做leetcode筆記的第一天)
leetcode的題難度在於需要考慮非常仔細周到。比如這道題。
思路:
給乙個字串,用來進行整合拼接。
給乙個字元,用來記錄當前字元是什麼,和下乙個字元是否相等。
給乙個整數,用來記錄當前字元在當前階段出現了多少次了。
注意事項:
考慮字串是否是空串或是否為null。
考慮這個字元長度是否等於2或1,因為等於2或1的話,壓縮後的長度肯定能夠大於等於原來字元的長度。
記得比較整合後的字串的長度和原來的字串的長度的大小。
**如下:
下面展示一些內聯**片
。
public
static string compressstring
(string s)
if(s == null)
if(s.
length()
==2|| s.
length()
==1)// 上面都是判斷這個字串的長度,便於提前退出
// 這裡先記錄s的長度,不然後面的for迴圈每次都呼叫很費事兒
int len = s.
length()
;// 這裡我用的stringbuilder,你也可以用stringbuffer。
// 因為string後面拼接的時候會不斷重新開闢空間,費時費記憶體。
stringbuilder res =
newstringbuilder()
;char cur = s.
charat(0
);int num =1;
for(
int i =
1; i < s.
length()
; i++
)else
// 如果迴圈進行到一般的時候,整合的字串長度已經大於等於原來字串的長度,則後面就沒必要進行了
if(res.
length()
>=len)
} res.
(cur)
.(num);if
(s.length()
<=res.
length()
)return res.
tostring()
;}
以上就是我歷經七八次失敗後,總結的,當然肯定肯定還能優化,我也會持續努力,進行優化,了解的大神也可以幫忙點評點評,謝謝 ~ . ~ LeetCode 壓縮字串
給定一組字元,使用原地演算法將其壓縮。壓縮後的長度必須始終小於或等於原陣列長度。陣列的每個元素應該是長度為1 的字元 不是 int 整數型別 在完成原地修改輸入陣列後,返回陣列的新長度。高階 你能否僅使用o 1 空間解決問題?示例 1 輸入 a a b b c c c 輸出 返回6,輸入陣列的前6個...
leetcode 壓縮字串
給定一組字元,使用原地演算法將其壓縮。壓縮後的長度必須始終小於或等於原陣列長度。陣列的每個元素應該是長度為1 的字元 不是 int 整數型別 在完成原地修改輸入陣列後,返回陣列的新長度。示例 1 輸入 a a b b c c c 輸出 返回6,輸入陣列的前6個字元應該是 a 2 b 2 c 3 說明...
LeetCode 壓縮字串
題目描述 給定一組字元,使用原地演算法將其壓縮。壓縮後的長度必須始終小於或等於原陣列長度。陣列的每個元素應該是長度為1 的字元 不是 int 整數型別 在完成原地修改輸入陣列後,返回陣列的新長度。高階 你能否僅使用o 1 空間解決問題?示例 1 輸入 a a b b c c c 輸出 返回6,輸入陣...