gpt4 book ai didi

java - 如何按顺序统计字符串中的字符?

转载 作者:行者123 更新时间:2023-12-01 06:03:48 25 4
gpt4 key购买 nike

我有一个用于 2D 平台游戏中编辑器的 String,用户可以单击 16x60 矩形板来创建自定义板。我循环遍历这些矩形并得到一个我想要修剪的字符串。 x 是 block ,a 是空白区域。我需要这个来绘制关卡。

String s = "x1x1x1x1a1a1x1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1";

我想将其修剪为x4a2x1a54。基本上是将紧随其后出现的 x 和 a 相加。

我该怎么做?

最佳答案

循环字符并存储最后一个字母字符。对于每个字符,解析其后面的数字。如果字母字符与最后一个字符相同,您可以将此数字添加到计数中,否则将旧结果写入输出:

public static String compress(String input) {
if (input == null || input.isEmpty()) {
return input;
}
char type = ' ';
int count = 0;
StringBuilder output = new StringBuilder();
int index = 0;
final int length = input.length();
while (index < length) {
char elementType = input.charAt(index);

// parse number
int elementCount = 0;
char c;
for (index++; index < length && Character.isDigit(c = input.charAt(index)); index++) {
elementCount = 10 * elementCount + (c - '0');
}

if (elementType == type) {
count += elementCount;
} else {
// finish counting last type
output.append(type).append(count);
type = elementType;
count = elementCount;
}
}
output.delete(0, 2); // remove substring added for the initial count/type
output.append(type).append(count); // append last entry
return output.toString();
}

这允许您输出与 1 不同的数字,例如

compress("a22a20x9")

关于java - 如何按顺序统计字符串中的字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50200512/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com