Java代码输出如果输入是“aabbba”,则输出应为“a2b3a1”

时间:2015-08-18 06:37:33

标签: java

我正在做一个简单的java代码,其中if

Html.Action()

然后

@Html.Action("Menu", yourControllerName)

我已经完成了以下编码,但遗漏了某处。所以让我知道我的错误。

input is : "aabbba" 

6 个答案:

答案 0 :(得分:1)

实际上你有太多的代码,你只需要一个循环,你应该将字母与前一个字母进行比较,而不是试图将每个字母与之后的每个字母进行比较。

如果您对程序的运行情况感到困惑,最好的办法是使用调试器逐步完成代码。

for(int i = 0, count = 1; i < str.length(); i++, count++) {
    char ch = str.charAt(i);
    char next = i + 1 < str.length() ? str.charAt(i + 1) : (char) -1;
    if (ch != next) {
       System.out.print("" + ch + count);
       count = 0;
    }
}

答案 1 :(得分:1)

使用您的努力和代码,您只是将打印件放在错误的位置

[tableAry sortUsingComparator:^NSComparisonResult(DataModel *obj1, DataModel *obj2) {
        return [obj1.name caseInsensitiveCompare:obj2.name];
}];

答案 2 :(得分:1)

你只是错过了最后一组字母的印刷品。只有在找到不同的字母后才能在循环内打印,你应该考虑到最后一组字母没有&#34;不同的字母&#34;之后

答案 3 :(得分:1)

使用Java-8和我的StreamEx库,它是一个单行程序:

String input = "aabbba";
String result = IntStreamEx.ofChars(input).mapToObj(ch -> (char)ch)
                      .runLengths().join("").joining();

一步一步:

  • IntStreamEx.ofChars(input):创建IntStreamEx(增强型IntStream),其中每个元素都是输入行的对应字符。
  • .mapToObj(ch -> (char)ch):转换为StreamEx<Character>(增强型Stream<Character>),其中每个元素都是Character对象。
  • .runLengths():转换为EntryStream<Character, Long>(增强型Stream<Map.Entry<Character, Long>>),其中键为Character个对象,值为相等字符的计数。
  • .join(""):转换为StreamEx<String>,通过给定的空分隔符加入键(字符)和值(计数)。
  • .joining():最终缩减为结果字符串而不添加其他分隔符。

答案 4 :(得分:1)

我建议使用StringBuilder

public String myOutput(String str) {
    if (str == null || str.length() == 0)
        return str;

    StringBuilder sb = new StringBuilder();
    int count = 1;
    char currentChar;

    for (int i = 0; i < str.length() - 1; i++) {
        currentChar = str.charAt(i);
        if (currentChar == str.charAt(i+1)) {
            count++;
        } else {
            sb.append(currentChar);
            sb.append(String.valueOf(count));
            count = 1;
        }
    }

    sb.append(str.charAt(str.length()-1));
    sb.append(String.valueOf(count));

    return sb.toString();
}

答案 5 :(得分:0)

  1. 您只需要1个循环
  2. System.out.println()将导致您的输出换行。您最好使用System.out.print()。现在你的代码就出现了:

    A2

    B3