1. 程式人生 > 實用技巧 >LeedCode刷題:443.壓縮字串

LeedCode刷題:443.壓縮字串

將相同字元統計出個數放在字元後,原地修改

解題思路:雙指標做法,read和write指標

 1 class Solution {
 2     public int compress(char[] chars) {
 3         int write=0;//寫指標
 4         int anchor=0;//指向連續字元的第一個
 5         for(int read=0;read<chars.length;read++){
 6             if(read+1==chars.length||chars[read+1]!=chars[read]){//判斷寫入條件
 7
chars[write++]=chars[anchor];//寫入第一個字元,後使write++ 8 if(read>anchor){//寫入連續字元長度 9 for(char c:(""+(read-anchor+1)).toCharArray()){//將連續字元的出現次數的數字轉為字元陣列後,迴圈一個個取出並修改原chars,例如100,則為"1""0""0" 10 chars[write++]=c; 11 }
12 } 13 anchor=read+1;//修改連續字元的第一個字元到read+1位置,即字元變化位置 14 } 15 } 16 return write;//write即為修改後陣列的長度,write是寫入字元和字元次數的總次數 17 } 18 }