2017年10月17日去某公司面试的面试题:
Implement a method to perform basic string compression using the counts of repeated characters. For example, the string aabcccccaaa would become a2b1c5a3. If the compressed string would not become smaller than the original string, your method should return the original string. You can assum the string has only uppercase and lowercase letters(a-z).
package com.cn.justin.test;
public class Test {
public static void main(String[] args) {
String string = "aaaaaa";
System.out.println(compressString(string));
}
public static String compressString(String string) {
if (string == null || string.isEmpty()) {
return null;
} else {
StringBuffer stringBuffer = new StringBuffer();
int count = 1;
for (int i = 0; i < string.length(); i++) {
if (i == string.length() - 1
|| string.charAt(i) != string.charAt(i + 1)) {
stringBuffer.append(string.charAt(i));
stringBuffer.append(count);
count = 1;
} else {
count++;
}
}
String compressString = stringBuffer.toString();
if (compressString.length() > string.length()) {
return string;
} else {
return compressString;
}
}
}
}