利用字符重復出現(xiàn)的次數(shù),編寫一個方法,實現(xiàn)基本的字符串壓縮功能。比如,字符串“aabcccccaaa”經(jīng)壓縮會變成“a2b1c5a3”。若壓縮后的字符串沒有變短,則返回原先的字符串。
給定一個string iniString為待壓縮的串(長度小于等于10000),保證串內(nèi)字符均由大小寫英文字母組成,返回一個string,為所求的壓縮后或未變化的串。
測試樣例
"aabcccccaaa"
返回:"a2b1c5a3"
"welcometonowcoderrrrr"
返回:"welcometonowcoderrrrr"
public class Zipper {
// / 利用字符重復出現(xiàn)的次數(shù),編寫一個方法,實現(xiàn)基本的字符串壓縮功能。比如,字符串“aabcccccaaa”經(jīng)壓縮會變成“a2b1c5a3”。若壓縮后的字符串沒有變短,則返回原先的字符串。
// 給定一個string iniString為待壓縮的串(長度小于等于10000),保證串內(nèi)字符均由大小寫英文字母組成,返回一個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));
}
}
此題沒啥好說的