zoukankan      html  css  js  c++  java
  • 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     }
  • 相关阅读:
    事务 ~ 锁
    JDBC
    C# ~ 由 IDisposable 到 GC
    C# ~ 泛型委托
    函数式编程
    反射
    测试初识
    C# ~ 从 委托事件 到 观察者模式
    C# ~ 从 IEnumerable / IEnumerator 到 IEnumerable<T> / IEnumerator<T> 到 yield
    Java初识
  • 原文地址:https://www.cnblogs.com/nilbook/p/13463697.html
Copyright © 2011-2022 走看看