首页 > 试题广场 >

基本字符串压缩

[编程题]基本字符串压缩
  • 热度指数:73175 时间限制:C/C++ 3秒,其他语言6秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解

现给定一个string iniString字符串(长度小于等于10000),请按连续重复字母压缩的方式将该字符串压缩,返回结果为string,比如,字符串“aabbcccccaaa”经压缩会变成“a2b2c5a3”,若压缩后的字符串没有变短,则返回原先的字符串。注意保证串内字符均由大小写英文字母组成。

示例1

输入

"aabcccccaaa"

输出

"a2b1c5a3"
示例2

输入

"welcometonowcoderrrrr"

输出

"welcometonowcoderrrrr"

说明

welcometonowcoderrrrr转换成重复字母压缩的结果是w1e1l1c1o1m1e1t1o1n1o1w1c1o1d1e1r5,比原字符串的长度还要长,所以返回原先的字符串。 
推荐
Ron头像 Ron
import java.util.*;

public class Zipper {
	public String zipString(String iniString) {
		// write code here
		if(iniString==null||iniString.trim().length()==0){
			return "";
		}
		StringBuilder strB = new StringBuilder("");
		char[] iniStr = iniString.toCharArray();
		char pre;
		pre = iniStr[0];
		int count = 1;
		for(int i = 1;i < iniStr.length; i++){
			if(pre == iniStr[i]){
				count++;
			}else{
				strB.append(pre+""+count);
				pre = iniStr[i];
				count = 1;
			}
		}
		strB.append(pre+""+count);
		if(strB.toString().length() >= iniString.length()){
			return iniString;
		}
		return strB.toString();
	}
}

编辑于 2015-10-14 14:31:45 回复(18)