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     }
  • 相关阅读:
    Java 一边读边写即读一行写一行
    mysql-字符类型
    mysql-数字类型:自增主键踩坑
    mysql-死锁
    mysql-查询的成本
    mysql-独立表空间
    mysql-innodb的表空间
    java-semaphore
    java-CyclicBarrier
    java-countDownLatch
  • 原文地址:https://www.cnblogs.com/nilbook/p/13463697.html
Copyright © 2011-2022 走看看