这是我在学校工作的(一种)RLE

我真的不明白为什么每次我执行程序时,它总是打印出A的计数是5,而实际上有4个A,我该如何解决这个问题

         String x = "AAAARRRGGH" + " "; 
         int z = 0;
         int count = 0;
         Boolean condition = false;
         
        while(condition == false) {
            
            for(int i = 0; i<x.length(); i++) {
                count++;
                if(x.charAt(i) != x.charAt(z)) {
                    System.out.println("" + x.charAt(z) + count);
                    z = i;
                    count = 0;
                     if(x.charAt(z) == x.charAt(x.length()-1)) {
                        condition = true;
                     }
                    
                }
            }
        }

推荐答案

只要角色改变,就除以x.

String x = "AAAARRRGGH" + " ";
List<String> ss = new ArrayList<>();
int z = 0;
for (int i = 1, n = x.length(); i < n; i++)
    if (x.charAt(i - 1) != x.charAt(i))
        ss.add(x.substring(z, z = i));
ss.add(x.substring(z));

然后, for each ss元素生成String.

StringBuilder s = new StringBuilder();
int n;
for (String e : ss) {
    s.append(e.charAt(0));
    if ((n = e.length()) != 1) s.append(n);
}

输出

A4R3G2H 

Java相关问答推荐

编译期间错误(Java 0000)Android .Net MAUI

如何在Spring Security中设置CustomLogin路径?

如何使用Java API在Oracle ODI中运行模拟?

即使我正在使用并发方法,使用Javascript的应用程序也会继续冻结'

填写文本字段后锁定PDF

多个Java线程和TreeMap.put()的非预期行为

确定Java中Math.Ranb()输出的上限

DTO到实体,反之亦然,控制器和服务之间的哪一层应该处理转换?

在学习Spring时,通过构造函数参数0表达了不满意的依赖关系

Java SSLKeyManager出厂密码

当我在Java中有一个Synchronized块来递增int时,必须声明一个变量Volatile吗?

如何通过用户ID向用户发送私信

Java递归泛型是否可以被视为继承和重写的语法糖

如何通过gradle命令行从build.gradle获得Java targetCompatibility

Java中计算大n和k值模10^9+7的二项式系数的乘法公式输出错误值

在JSON上获取反斜杠

";重复键的值提示唯一约束«;livre_genre_pkey»";例外

@此处不能应用可为null的批注

java.util.LinkedList()是如何成为MutableList的实例的?

什么是;u〃;平均值;jdku;在java开发工具包中?