Java游程長度編碼(Run-length Encoding)是一種基本的數據壓縮算法,將連續相同的數據用一個計數器和一個標志表示,從而在保存空間的同時保留了原始數據的基本信息。下面是一個基本的Java例題和答案。
public class RunLengthEncoding { public static void main(String[] args) { String input = "AAAABBBCCDAA"; String output = encode(input); System.out.println("Input : " + input); System.out.println("Output : " + output); } private static String encode(String input) { if (input.length() == 0) { return ""; } StringBuilder output = new StringBuilder(); char last = input.charAt(0); int count = 1; for (int i = 1; i< input.length(); i++) { if (input.charAt(i) == last) { count++; } else { output.append(count).append(last); count = 1; last = input.charAt(i); } } output.append(count).append(last); return output.toString(); } }
上面的示例演示了如何使用游程編碼將字符串"AAAABBBCCDAA"壓縮成"4A3B2C1D2A"。
在這個例子中,我們使用StringBuilder類來構建輸出字符串。通過遍歷輸入字符串并檢查相鄰字符,我們可以計算每個字符的重復計數。一旦我們遇到不同的字符,我們就將計數器和最后一個字符組合成一個新的游程,并將其添加到輸出字符串中。
特別注意,如果輸入字符串為空,則我們應返回一個空字符串輸出。