文字列圧縮にダブル ポインタを使用する
例:
public static void zipStr(String str) { char[] c = str.toCharArray(); int index = 0; int num = 1; int len = c.length; while (index < len - 1) { while (c[index] == c[index + 1]) { num++; index++; if (index >= len - 1) { break; } } System.out.print(c[index]); System.out.print(num); num = 1; index++; } }
結果は図に示すとおりです:
(推奨チュートリアル: java クイック スタート)
説明: このメソッドは、(aaabbbccc) の形式で文字列を圧縮します。圧縮結果は a3b3c3 ですが、形式 (acaadbbbcceeeffffff) の圧縮結果の場合、結果は a1c1a2d1b3c2e3f6 になります。明らかに、この結果は不合理であるため、次に文字列圧縮に HashMap を使用します。
文字列圧縮に HashMap を使用します。
例:
public static HashMap fun1(String str) { HashMap<Character, Integer> map = new HashMap<Character, Integer>(); char[] c = str.toCharArray(); for (int i = 0; i < c.length; i++) { Integer count = map.get(c[i]);//此处的count的类型一定要为Integer,如果为int类型,则count值为0 if (!map.containsKey(c[i])) { map.put(c[i], 1); } else { map.put(c[i], count + 1); } } return map; }
結果は次のとおりです:
以上がJavaで文字列圧縮を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。