Java压缩字符串

新手上路,请多包涵

我需要创建一个接收字符串并返回字符串的方法。

防爆输入:AAABBBCC

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();
}

感谢您的帮助,我正在努力提高我的逻辑能力。

原文由 Cristian 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 723
1 个回答

循环遍历字符串,记住您上次看到的内容。每次看到相同的字母都算数。当您看到一个新字母时,将您计算的内容放入输出并将新字母设置为您上次看到的内容。

 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());

原文由 n00begon 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题