使用java和循环压缩字符串的方法。例如,如果dc =" aabbbccaaaaba,那么c =" aab3cca4ba"这是我到目前为止所拥有的。请帮忙/指导。感谢。
int cnt = 1;
String ans = "";
for (int i = 0; i < dc.length(); i++) {
if ((i < dc.length()) && (dc.charAt(i) == dc.charAt(i++)) && (dc.charAt(i) == dc.charAt(i+=2))){
cnt++;
ans = ans + dc.charAt(i) + cnt;
}
else
ans = ans + dc.charAt(i);
setC(ans);
答案 0 :(得分:1)
除非你被限制使用for循环,否则我相信这会有所帮助:
String sb = "";
for (int i = 0; i < dc.length(); i++) {
char c = dc.charAt(i);
int count = 1;
while (i + 1 < dc.length() && (dc.charAt(i + 1)) == c) {
count++;
i++;
}
if (count > 1) {
sb += count;
}
sb += c;
}
System.out.println(sb);
编辑: 更改示例以使用常规String而不是StringBuilder。但是,我真的建议不要以这种方式连接字符串,特别是如果您尝试压缩的字符串很长。
答案 1 :(得分:0)
使用Sting.toCharArray()可能更容易得到你想要的东西。
然后相应地操纵数组。
答案 2 :(得分:0)
String dc = "aabbbccaaaaba";
String and = "";
int index = 0;
int cnt = 2;
While(dc.charAt(index) != null){
int index1 = index + 1;
char j = dc.charAt(index)
While(j.equals(dc.charAt(index1)){
cnt++;
}
//more code
index++;
}
它有点不完整但如果你遵循逻辑,我认为它是你正在寻找的东西。我不会为你做任务。
答案 3 :(得分:0)
最简单的解决方案: - 只有一个for循环,时间复杂度 - O(n)
public static void main(String[] args) {
String str = "aabbbccaaaaba";
char[] arr = str.toCharArray();
int length = arr.length;
StringBuilder sb = new StringBuilder();
int count=1;
for(int i=0; i<length; i++){
if(i==length-1){
sb.append(arr[i]+""+count);
break;
}
if(arr[i]==arr[i+1]){
count++;
}
else{
sb.append(arr[i]+""+count);
count=1;
}
}
System.out.println(sb.toString());
}