我正在做一个简单的java代码,其中if
Html.Action()
然后
@Html.Action("Menu", yourControllerName)
我已经完成了以下编码,但遗漏了某处。所以让我知道我的错误。
input is : "aabbba"
答案 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)
System.out.println()将导致您的输出换行。您最好使用System.out.print()。现在你的代码就出现了:
A2
B3