利用字符重復(fù)出現(xiàn)的次數(shù)冰沙,編寫一個(gè)方法侨艾,實(shí)現(xiàn)基本的字符串壓縮功能。比如拓挥,字符串“aabcccccaaa”經(jīng)壓縮會(huì)變成“a2b1c5a3”蒋畜。若壓縮后的字符串沒有變短,則返回原先的字符串撞叽。
給定一個(gè)string iniString為待壓縮的串(長度小于等于10000)姻成,保證串內(nèi)字符均由大小寫英文字母組成,返回一個(gè)string愿棋,為所求的壓縮后或未變化的串科展。
測試樣例
"aabcccccaaa"
返回:"a2b1c5a3"
"welcometonowcoderrrrr"
返回:"welcometonowcoderrrrr"
public class Zipper {
// / 利用字符重復(fù)出現(xiàn)的次數(shù),編寫一個(gè)方法糠雨,實(shí)現(xiàn)基本的字符串壓縮功能才睹。比如,字符串“aabcccccaaa”經(jīng)壓縮會(huì)變成“a2b1c5a3”甘邀。若壓縮后的字符串沒有變短琅攘,則返回原先的字符串。
// 給定一個(gè)string iniString為待壓縮的串(長度小于等于10000)松邪,保證串內(nèi)字符均由大小寫英文字母組成坞琴,返回一個(gè)string,為所求的壓縮后或未變化的串逗抑。
// 測試樣例
//"aabcccccaaa"
// 返回:"a2b1c5a3"
// "welcometonowcoderrrrr"
// 返回:"welcometonowcoderrrrr"
public String zipString(String iniString) {
// write code here
char[] chars=iniString.toCharArray();
if(chars.length == 1){
return iniString;
}
String newString=iniString.substring(0,1);
int counter=1;
for(int i=0;i<iniString.length()-1;i++){
if(chars[i] == chars[i+1]){
counter++;
}else{
newString+=counter;
newString+=chars[i+1];
counter=1;
}
}
newString+=counter;
return newString.length()<iniString.length()?newString:iniString;
}
public static void main(String[] args){
String Strings="aabcccccaaa";
System.out.println(new Zipper().zipString(Strings));
}
}
此題沒啥好說的