検索しているインデックスを確認し、文字数の合計を開始します。追加するたびに、インデックスが前の間隔と現在の間隔内にあるかどうかを確認します。もしそうなら、あなたはあなたのキャラクターが何であるかを見つけました. そうでなければ、もう一度追加してください.
たとえば、a5b4c2
インデックス 7 の文字が必要な場合、 string が指定されたワークフローは次のようになります。
current position: 0
index we are looking for: 7
add first character's count: 0+5 = 5
does 7 fall within 0 and 5? no, add again
current position: 5
add second character's count: 5+4 = 9
does 7 fall within 5 and 9? yes, so our character must be 'b'.
charAt()
これが文字列を解凍してまたは何かを使用するよりも効率的または高速であるかどうかはわかりませんが、アプローチの方法が異なるだけです。
編集:問題は文字列を解凍する方法に関するものであるため、 aStringBuilder
を使用してfor
ループを使用して、正しい文字数を文字列に追加できます...私にとって最も簡単な方法のように聞こえます。