2016-10-21 9 views
1

文字とその文字の出現回数を持つ文字列に対して、完全な文字列にデコードします。エンコード中に文字が1回しか表示されない場合、その文字の隣に数字はありません。文字の後ろに周波数が続く文字列を復号化できません。

入力:"a5br3"
出力:"aaaaabrrr"

イムとして出力を得る:

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr 

は私のロジックが正しいですか?私のコードで何が間違っていますか?

public String func (String str){ 
    if(str==null){ 
     return null; 
    } 
    String result=""; 
    for(int i=0;i<str.length();i++){ 
     char c= str.charAt(i); 
     if(Character.isLetter(c)){ 
      result+=str.charAt(i); 
     } 
     else if(Character.isDigit(c)){ 
      for(int j=0;j<c;j++){ 
       result+=str.charAt(i-1); 
      } 
     } 
    } 

    return result; 
} 

答えて

4

数字の数値とその文字コードを混同しました。さらに、文字がすでに文字列に追加されているので、ループ中にコピーを1つ少なくする必要があります。あなたはこのようなコードを使用することができます:

for(int j=1;j<(c - '0');j++) ... 
+0

TIS入力用:入力: "a10br3a3" 出力: "aaaaaaaaaabrrraaa" この入力の –

+0

: "a10br3a3" 実際の出力IIS: "aaaaaaaaaabrrraaa" が、イムabrrraaaを取得します。.. ........それは一桁で10を取っていません...... –

+1

確かではありません。複数桁の数字を使用することもできますが、すべての桁を集めて番号に変換する必要があります。私はちょうどあなたが最初にプログラムで持っていたものを取った。 – Henry

関連する問題