zoukankan      html  css  js  c++  java
  • 利用字符串重复出现的次数,编写一个方法,实现基本的字符串压缩功能

    /*
     * 利用字符串重复出现的次数,编写一个方法,实现基本的字符串压缩功能,比如字符串aabcccccaaa
     * 会变成a2b1c5a3,若压缩后的字符串没有变短,则返回原来的字符串
     * 
     * 思路:
     * 我们会迭代访问字符串,将字符拷贝到新字符串,并数出重复字符,在这里建立使用stringbuffer而不是用string
     * 
     * */
    
    public class StringCount {
        String compressBetter(String str)
        {
            //检查压缩之后的长度有没有变长?
            int size=countCompression(str);
            if(size>=str.length())
            {
                return str;
            }
            StringBuffer mystr=new StringBuffer();
            char last = str.charAt(0);
            int count=1;
            for(int i=1;i<str.length();i++)
            {
                if(str.charAt(i)==last)//如果是重复字符
                    count++;
                else                    //插入字符的次数和更新last字符
                {
                    mystr.append(last);
                    mystr.append(count);
                    last=str.charAt(i);
                    count=1;
                }
            }
            mystr.append(last);
            mystr.append(count);
            return mystr.toString();
        }
        /*
         * 
         * 该函数计算出压缩后字符串的长度*/
        int countCompression(String str)
        {
            if(str==null || str.isEmpty())
                return 0;
            char last=str.charAt(0);
            int size=0;
            int count=1;
            for(int i=1;i<str.length();i++)
            {
                if(str.charAt(i)==last)
                    count++;
                else
                {
                    last=str.charAt(i);
                    size+=1+String.valueOf(count).length();
                    count=1;
                }
            }
            size+=1+String.valueOf(count).length();
            return size;
        }
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            StringCount obj = new StringCount();
            String str="aabcccccaaa";
            System.out.println(obj.compressBetter(str));
        }
    
    }

    2014-09-0510:31:45

  • 相关阅读:
    LoggingApplicationListener
    Repeated meta-data items
    善待Redis里的数据--Unable to validate object
    mysql启动的四种方式
    mybatis操作动态表+动态字段+存储过程
    VMware 11安装Mac OS X 10.10
    JMS开源比较
    VMware 11安装Mac OS X 10.10
    网页设计的标准尺寸
    FullPage.js
  • 原文地址:https://www.cnblogs.com/luoweiKnowledge/p/3957474.html
Copyright © 2011-2022 走看看