iteye_17041 2013-04-29 12:48
浏览 450
已采纳

如何实现aaabbbsdd转换成3a3bs2d

如何实现aaabbbsdd转换成3a3bs2d
我刚开始的思路是用正则表达式
先切割然后替换,可是写不出来。
希望大家能写出来参考一下、谢谢。或者给个伪代码。

  • 写回答

3条回答 默认 最新

  • clxy大叔 2013-04-29 15:33
    关注

    [code="java"]
    public class StringZip {

    public static void main(String[] args) {
    
        StringBuilder sb = new StringBuilder();
        Stack stack = new Stack();
    
        for (char c : "aaabbbsdd".toCharArray()) {
            stack.push(c, sb);
        }
        stack.append(sb);
    
        System.out.println(sb);
    }
    
    static class Stack {
    
        private int count = 1;
        private Character chr;
    
        public void push(char c, StringBuilder sb) {
    
            // 初次。
            if (chr == null) {
                chr = c;
                return;
            }
    
            // 相同则+1。
            if (chr == c) {
                count++;
                return;
            }
    
            // 不同则输出。
            append(sb);
    
            // 重置。
            chr = c;
            count = 1;
        }
    
        public void append(StringBuilder sb) {
            if (count > 1) {
                sb.append(count);
            }
            sb.append(chr);
        }
    }
    

    }
    [/code]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥500 服务器搭建cisco AnyConnect vpn
  • ¥15 用大厂网站防红自己网站
  • ¥15 悬赏Python-playwright部署在centos7上
  • ¥15 psoc creator软件有没有人能远程安装啊
  • ¥15 快速扫描算法求解Eikonal方程咨询
  • ¥20 我的是道格手机,重置后屏幕右上角出现红色字的未写入tee key 和未写入google key请问怎么去掉啊
  • ¥15 校内二手商品转让网站
  • ¥20 高德地图聚合图层MarkerCluster聚合多个点,但是ClusterData只有其中部分数据,原因应该是有经纬度重合的地方点,现在我想让ClusterData显示所有点的信息,如何实现?
  • ¥100 求Web版SPC控制图程序包调式
  • ¥20 指导如何跑通以下两个Github代码