2017-12-27 45 views
-3

와 계산 "1111"와 문자열 B는 = "1223",이 결과를 기대 :나는 주어진 두 개의 문자열을 자바

1111 
1112 
1113 
1121 
1122 
1123 
1211 
1212 
1213 
1221 
1222 
1223 

이들은 String a = "0100110"String b = "01101120" 같은 또한 긴 문자열이 될 수 있습니다.

I 문자열 a 모든 캐릭터가 하부 또는 문자열에 동일한 문자 위치 b (문자열 A = "11"및 문자열 B = "00"< =하지보다 같아야한다는 조건에서 사용자로부터 이러한 문자열을 기다리고

public void expand(String l,String h){ 
for(int i=l.length()-1; i>=0; i--) 
{ 
    sb = new StringBuffer(l);    
    if(charToDigit(l.charAt(i)) < charToDigit(h.charAt(i))) {   
     sb.replace(i, i+1, inc(sb.charAt(i))); 
     expand(sb.toString(),h); 
     System.out.println(sb.toString()); 
    } 
} 
} 
+0

을 시도 내 솔루션입니까? 지금까지 코드는 무엇입니까? [좋은 질문을 쓰는 방법에 대한 지침을 읽으십시오] (https://stackoverflow.com/help/how-to-ask) – ubadub

+0

지금까지 좋은 결과가 없습니다! 나는 좋은 방법으로이 문제를 다룰 수있는 강력한 무언가를 기다리고있다. –

+0

Java 프로그래밍 방법을 알고 있습니까? 적어도 입력을 받아들이도록 뭔가 쓰셨습니까? – ubadub

답변

0

를 호출 적은 수의 x과 더 많은 y :

이 지금까지 재귀 적 방법이지만 입력에 따라 두 번 이상의 번호를 생성하기 때문에 그것은 매우 잘 작동하지 않습니다) 허용 . y mod 10 (y % 10)을 계산하면 가장 작은 숫자의 값을 찾을 수 있습니다 (n). 마찬가지로 x의 최하위 자릿수를 계산하고 m이라고하고 x과 같은 임시 변수 i을 처음에 만듭니다. 해당 숫자가 y와 같을 때까지 반복하십시오.

루프 본문에 먼저 i을 인쇄하십시오. 그런 다음 i (다시 계산하면 i % 10으로 계산 됨)의 최하위 숫자 인 on보다 작 으면 i이 1 씩 증가합니다. 그렇지 않은 경우 o == n 인 경우 i10 - n + m까지 늘립니다. 당연히, o > n의 경우, x의 모든 자릿수가 y의 해당 자릿수보다 작거나 같았 기 때문에 무언가가 잘못되었습니다 (즉, 사용자로부터 잘못된 입력). 의사에 따라서

:

여기
x = smaller number 
y = larger number 
n = y % 10 
m = x % 10 
i = x 

while (i <= y): 
    print i 
    o = i % 10 
    if (o < n): 
     i += 1 
    else if (o == n): 
     i += 10 - n + m 
0

당신은 무엇을

static String l="000"; 
static String h="232"; 
static ArrayList<String> combinations = new ArrayList<String>(); 
static int stringLength= l.length(); 

for(int i=0; i<rulelength; i++) 
{ 
    combinations.add((charToDigit(h.charAt(i)) - charToDigit(l.charAt(i))+1)+""); 
} 
int number = 1; 
for(int i=0; i<combinations.size(); i++) 
{ 
    number*=Integer.parseInt(combinations.get(i)); 
} 
int change = Integer.parseInt(combinations.get(combinations.size()-1)); 
expand(l, h, change, number); 

public static void expand(String l, String h, int change, int comb) 
{ 
    StringBuffer sb = new StringBuffer(l); 
    int pos = stringLength-1; 
    int tmpPos = pos; 
    for(int i=1; i<=comb; i++) 
    { 
     System.out.println(sb.toString()); 
     sb.replace(pos, pos+1, inc(sb.charAt(pos))); 
     if((i % change)==0) { 
      for(int j=stringLength-1; j>0; j--) 
      { 
       if(charToDigit(sb.charAt(j)) >= (Integer.parseInt(combinations.get(j))-1)) 
        tmpPos = j-1;     
       else 
        break; 
      } 
      sb.replace(tmpPos, tmpPos+1, inc(sb.charAt(tmpPos))); 
      for(int j=stringLength-1; j>tmpPos; j--) 
      { 
       sb.replace(j, j+1, l.charAt(j)+""); 
      } 
     } 
    } 
}