LeedCode刷題:443.壓縮字串
阿新 • • 發佈:2020-08-09
將相同字元統計出個數放在字元後,原地修改
解題思路:雙指標做法,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]){//判斷寫入條件 7chars[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 }