2016-10-21 2 views
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

숫자의 숫자 값을 문자 코드와 혼동했습니다. 게다가 캐릭터가 이미 문자열에 한 번 추가 되었기 때문에 루프 중에 더 적은 복사본을 추가해야합니다. TIS 입력을

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

: : 입력 : "a10br3a3" 출력이 입력에 대해 "aaaaaaaaaabrrraaa" –

+0

: "a10br3a3" 실제 출력 IIS :이 같은 코드를 사용할 수있다 "aaaaaaaaaabrrraaa을"하지만 메신저 abrrraaa을 받고 .. ........ 그것은 하나의 숫자로 10을 가져 가지 않습니다 ...... –

+1

물론 아닙니다. 여러 자리 숫자를 사용할 수도있는 경우 모든 숫자를 수집하고 숫자로 변환해야합니다. 방금 처음에 프로그램에서했던 것을 가져갔습니다. – Henry

관련 문제