Java 运行长度编码程序在字母之前有数字
我正在制作一个用于缩短单词的游程编码程序。 i、 e.aaabbc变为3a2bc 到目前为止,我的程序工作正常,但它没有输出3a2bc,而是输出a3b2c。那么我怎样才能切换当前的程序呢 代码:Java 运行长度编码程序在字母之前有数字,java,string,loops,run-length-encoding,Java,String,Loops,Run Length Encoding,我正在制作一个用于缩短单词的游程编码程序。 i、 e.aaabbc变为3a2bc 到目前为止,我的程序工作正常,但它没有输出3a2bc,而是输出a3b2c。那么我怎样才能切换当前的程序呢 代码: 公共类压缩{ 公共静态void main(字符串[]args){ String word=“aaabbc”; System.out.println(compress(word)); } 公共静态字符串压缩(字符串原始){ 字符串压缩=”; char ch=原始字符(0); int计数器=1; 对于(in
公共类压缩{
公共静态void main(字符串[]args){
String word=“aaabbc”;
System.out.println(compress(word));
}
公共静态字符串压缩(字符串原始){
字符串压缩=”;
char ch=原始字符(0);
int计数器=1;
对于(inti=1;i
您有:
else {
compressed = compressed + ch;
if(counter != 1){
compressed = compressed + counter;
}
ch = original.charAt(i);
counter = 1;
}
您应该切换前两个语句块,如
else {
if(counter != 1){
compressed = compressed + counter;
}
compressed = compressed + ch;
ch = original.charAt(i);
counter = 1;
}
顺便说一句,使用StringBuilder进行此操作要比使用String高效得多此操作有效,但并非所有操作都有效。例如,“aaabbbctt”返回3a3bcT3,不确定原因,但3出现在T的末尾
else {
if(counter != 1){
compressed = compressed + counter;
}
compressed = compressed + ch;
ch = original.charAt(i);
counter = 1;
}