压缩字符串(科大讯飞)

1.题目要求

输入:aaabbce

输出:   3a2bce

2.实现思路

step1:定义一个StringBuffer用来拼接后来新生成的字符串。

step2:定义开始指针start=0,定义第二个指针j=start+1,遍历字符串中的每一项当指针当前指向的字符和它后面的元素有相同的时候sum++,sum初始为1,判断sum值

  • 当sum值>2时,输出sum值
  • 输出此时start指针指向的字符值

step3:将start值重新赋值为start+sum

3.代码实现

public class CompressString {

    public static String compressString(String s){
        if(s==null||s.length()==0)
            return "";

        char[] chars=s.toCharArray();
        StringBuffer sb=new StringBuffer();
        int start=0;
        while(start<chars.length){
            int sum=1;
            for(int j=start+1;j<chars.length;j++){
                if(chars[start]==chars[j]){
                    sum++;
                }
            }
            if(sum>1){
                sb.append(sum);
            }
            sb.append(chars[start]);
            start=start+sum;
        }
       return sb.toString();
    }

    @Test
    public void test1(){
        String s="aaabbce";
        String result=compressString(s);
        System.out.println(result);
    }

    @Test
    public void test2(){
        String s="aaaaaaaa";
        String result=compressString(s);
        System.out.println(result);
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值