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     }
  • 相关阅读:
    堆内存和栈内存
    链表
    爬虫---正则表达式
    剑指offer---二维数组中的查找
    基于C#开发的俄罗斯方块
    Java第十天
    软考错题合集之11-05-AM
    软考错题合集之11-11-AM
    软考错题合集之12-05-AM
    GOF之模板模式
  • 原文地址:https://www.cnblogs.com/nilbook/p/13463697.html
Copyright © 2011-2022 走看看