題目資訊

解題方法 :雙指標遍歷
創建ch,讓它獲取S的第一個字符,定義計數器count初始化為1,接下來讓ch和S的下一個字符比較,如果他們相等,count+1,不想等的話,創建一個StringBuilder的實體物件ans,讓ans使用append方法,拼接當前的ch,再拼接它的count,讓把當前的字符賦給ch,計數器歸1,繼續進行回圈,回圈結束后把最后的ch和他的count添加到ans里,回傳ans和S.length的較小值,
代碼實作
class Solution {
public String compressString(String S) {
if(S.length()==0){
return S;
}
StringBuilder ans=new StringBuilder();
char ch=S.charAt(0);
int count=1;
for (int i = 1; i <S.length() ; i++) {
if(ch==S.charAt(i)){
count++;
}
else {
ans.append(ch);
ans.append(count);
ch=S.charAt(i);
count=1;
}
}
ans.append(ch);
ans.append(count);
return ans.length() >=S.length() ? S: ans.toString();
}
}
如果覺得不錯的話,可以看看我的其他題解
怎么把i am a student逆置成student a am i?面試題逆置字串講解
三種方法任君挑選 LeetCode_136只出現一次的數字
什么?動態規劃10行求出連續子陣列的最大和 劍指offer-42講解
劍指 Offer 39. 陣列中出現次數超過一半的數字 簡單易懂14行搞定 ,人人皆可會
二叉樹的層序遍歷原理+LeetCode真題練習
LeetCode 24:兩兩交換鏈表中的節點,1662. 檢查兩個字串陣列是否相等
LeetCode 第二十一題
劍指 Offer 58 - II. 左旋轉字串的三種解法一起看看吧!!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/296877.html
標籤:其他
