码迷,mamicode.com
首页 > 其他好文 > 详细

对字符串进行压缩

时间:2015-10-29 14:50:06      阅读:142      评论:0      收藏:0      [点我收藏+]

标签:基本字符串压缩

题目说明:

    利用字符重复出现的次数,编写一个方法,实现基本的字符串压缩功能。比如,字符串“aabcccccaaa”经压缩会变成“a2b1c5a3”。若压缩后的字符串没有变短,则返回原先的字符串。
给定一个string iniString为待压缩的串(长度小于等于3000),保证串内字符均由大小写英文字母组成,返回一个string,为所求的压缩后或未变化的串。

/**

* 基本字符串压缩

*/

public static void zipString(String iniString) {

if(iniString == null || iniString.length()==0) {

            return;

        }

String zipStr = "";

char[] array = iniString.toCharArray();// 11

// System.out.println(array.length);

int count = 1;

int k = 0;

for (int j = k; j < array.length - 1; j++) {

k++;


if (array[j] == array[j + 1]) {

count++;


} else if (j != 0 && (array[j - 1] == array[j])) {

zipStr = zipStr + array[k - 1] + count;

count = 1;

}

if (j != 0 &&(array[j-1] != array[j])

&& (array[j] != array[j + 1])

) {

count = 1;

zipStr = zipStr + array[k-1] + count;

continue;

}

if (j == array.length - 2) {

zipStr = zipStr + array[k] + count;

}

}

// System.out.println(zipStr);

if (zipStr.length() >= iniString.length()) {

System.out.println(iniString);

} else {

System.out.println(zipStr);

}

}

    

    /**

      网友的高效解法

    */

public static String zipStr(String iniString){

if(iniString == null || iniString.length()==0) {

            return null;

        }

        StringBuilder sb = new StringBuilder();

        int len = iniString.length();

        for(int i=0;i<len;i++) {

            int count = 1;

            while((i+1)<len && iniString.charAt(i) == iniString.charAt(i+1)){

                count++;

                i++;

            }

            if(count>=1){

                sb.append(iniString.charAt(i));

                sb.append(count);

            }else{

                sb.append(iniString.charAt(i));

            }

        }

        if(sb.length() < iniString.length()){

            return sb.toString();

        }

        return iniString;

}


对字符串进行压缩

标签:基本字符串压缩

原文地址:http://5453607.blog.51cto.com/5443607/1707644

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!