[LeetCodeのインタビューの質問] 01.06。圧縮文字列LCCI圧縮された文字列(簡単)(JAVA)
トピック住所:https://leetcode.com/problems/rotate-list/
件名の説明:
繰り返される文字の数を使用して、基本的な文字列の圧縮を実行するためのメソッドを実装します。例えば、文字列aabcccccaaaはa2blc5a3なります。「圧縮」文字列は元の文字列よりも小さくなっていないならば、あなたの方法は、元の文字列を返す必要があります。( - Z)あなたは、文字列のみ大文字と小文字を持っていると仮定することができます。
例1:
Input: "aabcccccaaa"
Output: "a2b1c5a3"
例2:
Input: "abbccd"
Output: "abbccd"
Explanation:
The compressed string is "a1b2c2d1", which is longer than the original string.
注意:
0 <= S.length <= 50000
効果の対象に
列圧縮。基本的な文字列の圧縮を達成するための方法で書かれた定期的な文字の数を、使用します。例えば、文字列aabcccccaaaはa2b1c5a3になります。文字列は短くない「圧縮」した場合、元の文字列が返されます。あなたは、文字列のみ小文字(a〜z)のが含まれているとことがあります。
問題解決のアプローチ
非常に簡単な質問は、直接、同じ行に連続した文字の数を決定します
class Solution {
public String compressString(String S) {
StringBuilder res = new StringBuilder();
for (int i = 0; i < S.length(); i++) {
int count = 1;
char ch = S.charAt(i);
i++;
while (i < S.length() && ch == S.charAt(i)) {
i++;
count++;
}
res.append(ch).append(count + "");
i--;
}
if (res.length() < S.length()) {
return res.toString();
}
return S;
}
}
実行時:10ミリ秒、のJavaに提出するすべてのユーザーの41.93パーセントを打つ
メモリ消費量:42.1メガバイトには、すべてのJavaの提出にユーザーの100.00パーセントを破りました