用Java 编程 如何将 字符串原地压缩。

题目描述:“eeeeeaaaff"压缩为"e5a3f2"。字符串压缩算法,把s字符串压缩处理后结果保存在res中比如:输入aaaaeefggg输出为a4e2f1g3输入h... 题目描述:“eeeeeaaaff" 压缩为 "e5a3f2"。
字符串压缩算法,把s字符串压缩处理后结果保存在res中

比如:
输入
aaaaeefggg
输出为
a4e2f1g3

输入
hhfhhhhff
输出为
h2f1h4h2
展开
 我来答
匿名用户
2014-12-06
展开全部
对字符做累加,如果遇到相同字符则加1,否则输出累加的数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
丨丶害虫灬
推荐于2017-09-21 · 超过12用户采纳过TA的回答
知道答主
回答量:33
采纳率:80%
帮助的人:18.1万
展开全部

String str = "aaaaaasssscccccdddddddwsaaasdcas";
int length = str.length();
List<Integer> index = new ArrayList<Integer>();
for (int i = 0; i < length - 1; i++) {
if(str.charAt(i) != str.charAt(i + 1)){
index.add(i);
}
}
if(str.charAt(length - 2) != str.charAt(length - 1)){
index.add(length - 1);
}
int start = 0;
StringBuffer result = new StringBuffer();
for (int i = 0; i < index.size(); i++) {
int end = index.get(i) + 1;
if(i != 0){
start = index.get(i - 1) + 1;
}
String temp = str.substring(start, end);
result.append(temp.charAt(0)).append(end - start);
}
System.out.println(result.toString());
最终结果是:a6s4c5d7w1s1a3s1d1c1a1s1

本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
叶开851758724
2014-12-06 · TA获得超过122个赞
知道答主
回答量:103
采纳率:0%
帮助的人:48.8万
展开全部
后秀名爱了慢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式