我的一個朋友得到了這個interview question。另外,他被告知他可以假設人物是字母a到z(大寫或小寫)。我寫了以下內容,但我無法弄清楚如何使用關於字符串包含的有限字符(a到z)的假設。我是否在沒有意識到的情況下使用這種假設,還是可以利用它?在有限字符允許的情況下壓縮java中的字符串
public static String compress(String str){
int count = 1;
char c = str.charAt(0);
StringBuffer result = new StringBuffer();
for (int i = 1; i < str.length();i++){
if (str.charAt(i) == c){
count++;
}
else{
String to_add = c + String.valueOf(count);
result.append(to_add);
count = 1;
c = str.charAt(i);
}
}
// last character
String to_add = c + String.valueOf(count);
result.append(to_add);
String result_str = result.toString();
// Check whether the compressed string is
// actually smaller than the original one
if (result_str.length() < str.length()){
return result_str;
}
else{
return str;
}
}
由於知道有限字符a-z(26),因此可以使用26個字節對32個字符進行編碼,而無需使用更高級的壓縮算法。 – mac
什麼應該混合的情況下輸出 - 說AAAaaaBBBcc == 5A3B2C? – user1428716
@ user1428716它應該是A3a3B3c2 – giulio