Java压缩字符串

Cri*_*ian 12 java compression string loops

我需要创建一个接收String的方法,并返回一个String.

输入:AAABBBBCC

Ex输出:3A4B2C

嗯,这是非常尴尬的,我无法在今天的采访中做到这一点(我申请了一个初级职位),现在,在家里尝试我做了一些静态工作,我的意思是,不使用循环这是一种无用的但我不知道我是否没有得到足够的睡眠或其他什么,但我无法弄清楚我的for循环应该是什么样子.这是代码:

public static String Comprimir(String texto){

    StringBuilder objString = new StringBuilder();

    int count;
    char match;

        count = texto.substring(texto.indexOf(texto.charAt(1)), texto.lastIndexOf(texto.charAt(1))).length()+1;
        match = texto.charAt(1);
        objString.append(count);
        objString.append(match);

    return objString.toString();
}
Run Code Online (Sandbox Code Playgroud)

感谢您的帮助,我正在努力提高自己的逻辑技能.

n00*_*gon 11

循环通过字符串记住你上次看到的内容.每次看到相同的字母数.当你看到一封新的信件时,你把你计算的数字放在输出上,并将新信件设置为你上次看到的字母.

String input = "AAABBBBCC";

int count = 1;

char last = input.charAt(0);

StringBuilder output = new StringBuilder();

for(int i = 1; i < input.length(); i++){
    if(input.charAt(i) == last){
    count++;
    }else{
        if(count > 1){
            output.append(""+count+last);
        }else{
            output.append(last);
        }
    count = 1;
    last = input.charAt(i);
    }
}
if(count > 1){
    output.append(""+count+last);
}else{
    output.append(last);
}
System.out.println(output.toString());
Run Code Online (Sandbox Code Playgroud)


Cha*_*ani 5

您可以使用以下步骤执行此操作:

  • 创建一个HashMap
  • 对于每个字符,从hashmap获取值 - 如果值为null,则输入1 -else,将值替换为(value + 1)
  • 迭代HashMap并保持连接(Value + Key)

  • 我不认为这会起作用AAABBAAA将压缩到6A2B你无法解压! (11认同)

Boz*_*zho 4

  • 使用StringBuilder(你这样做了)
  • 定义两个变量 -previousCharcounter
  • 从 0 到str.length()- 1循环
  • 每次获取并将其与变量str.charat(i)中存储的内容进行比较previousChar
  • 如果前一个字符相同,则增加计数器
  • 如果前一个字符不相同,且计数器为 1,则递增计数器
  • 如果前一个字符不相同,并且计数器 >1,则追加counter + currentChar,重置计数器
  • 比较后,分配当前字符previousChar
  • 涵盖像“第一个字符”这样的极端情况

类似的事情。