题解 | #字符串编码#

字符串编码

https://www.nowcoder.com/practice/56a487c342a64d2ea4c3a0b0144b42d0

import java.util.ArrayList;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in); 
        String s = sc.nextLine();
        char[] chars = s.toCharArray(); 
        ArrayList<Character> listStr = new ArrayList<>(); //存字母
        ArrayList<Integer> listnum = new ArrayList<>();   //存字母个数
        int num=-1;
        int count=0;
        for (int i = 0; i < chars.length-1; i++) {  //这里的局限是最后面的字符截取不到,然后下面进行了补充list
            if(chars[i+1]!=chars[i]){ 
              listStr.add(chars[i]);
              listnum.add(i-num);
               num = i;
            }
        }

        for (Integer n:listnum) {
            count += n;
        }
          if (count<chars.length){         //通过listnum里面的总和和开始客户端输入的字符长度对比
              listStr.add(chars[count]);
              listnum.add(chars.length-count);      //差值就是上面没有取到的最后一段字符的长度
          }

       for (int i=0;i<listStr.size();i++) {
           System.out.print(listnum.get(i));
           System.out.print(listStr.get(i));
       }

    }
}


全部评论
开始本来准备直接用HashMap存的,但是Map存不了重复的key。然后本人是本着从前到后依次解析。方法比较笨。欢迎大家给出高见
点赞 回复 分享
发布于 2022-09-19 22:41 广东

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务