现给定一个string iniString字符串(长度小于等于10000),请按连续重复字母压缩的方式将该字符串压缩,返回结果为string,比如,字符串“aabbcccccaaa”经压缩会变成“a2b2c5a3”,若压缩后的字符串没有变短,则返回原先的字符串。注意保证串内字符均由大小写英文字母组成。
现给定一个string iniString字符串(长度小于等于10000),请按连续重复字母压缩的方式将该字符串压缩,返回结果为string,比如,字符串“aabbcccccaaa”经压缩会变成“a2b2c5a3”,若压缩后的字符串没有变短,则返回原先的字符串。注意保证串内字符均由大小写英文字母组成。
"aabcccccaaa"
"a2b1c5a3"
"welcometonowcoderrrrr"
"welcometonowcoderrrrr"
welcometonowcoderrrrr转换成重复字母压缩的结果是w1e1l1c1o1m1e1t1o1n1o1w1c1o1d1e1r5,比原字符串的长度还要长,所以返回原先的字符串。
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(); } }