조건에 따라 문자열로 문자열 변환

ZAK ZAK :

입력으로, 나는 단지 '0'이 포함 된 문자열 개체가있다.

입력의 예 String word = "00000".

문제는 출력으로 다른 문자열이 문자열을 변환하는 것입니다.

변환은 모든 '0'의 결과에 적어도 하나의 '1'에 인접하는 몇 가지 특정 위치에 '1'로 약간 '0'으로 대체하는 것이다.

몇 가지 예 :

input     |    output
0000          0101
00000         01001
000000        010010
0000000       0100101
00000000      01001010

우리가 알 수 있듯이, 출력은 조건마다 '0'적어도 하나의 '1'에 인접 다.

두 번째 조건은 우리가 '1'의 최소 번호를 사용해야한다는 것입니다.

몇 가지 작업 후 나는 우리가 0의 값을 대체해야하는 '1'의 최소 번호를 알 수 있다는 것을 깨달았다.

수식은 getMinNumber (문자열 워드)의 방법에 의해 표현된다.

여기에 내가 한 일이다.

  public class TestUtilities {

    public static void main( String[] args ) {

        String [] words ={"0000","00000","000000","0000000"} ;
        for (String str :words) {
            System.out.println(transform(str));
        }
    }
    private static String  transform( String word ) {
        int min =  getMinNumber(word);
        //////
        //Some processing Here  
        /////
        return "";
    }

    public static int getMinNumber(String word) {
        int min;
        if (word.length() % 3 == 0) {
            min = word.length() / 3;
        } else {
            min = (word.length() / 3) + 1;
        }
        return min;
    }
}

도시 된 바와 같이, 난 적자 알고리즘을 찾기 때문에 coudn't는 처리 부분을 떠났다. 일반적으로 나는 매 3 0 일 0을 교체해야하지만, 모든 단어에 대한 작업을 나던.

나는 어떤 단어를 처리 할 수있는 솔루션을 찾고 있어요.

Pshemo :

(1)의 최소 금액을 얻으려면 우리는 서로 한 우리가 반복 할 필요가 의미 가능한 한 많은 0으로 처리 할 필요가 010시간의 최대 양을. 우리는 함께 제로 교체 시작할 수 있도록 010왼쪽에서

0000000000
↓↓↓↓↓↓↓↓↓
010010010x   <- here you can't place another 010 and we have one extra place to fill

경우 010전체 번호이 수단을 기입하지 않은 우리는 하나 또는 두 개의 이상의 숫자가 필요합니다.

우리는 하나의 숫자 인 경우 어떻게해야합니까? 우리가 사용할 수 0여기? : 볼 수 있습니다 010010010x될 것입니다 0100100100?
그것은 유효한 결과인가? NO 마지막 제로는 없기 때문에 1근처를. 우리는 사용할 수 없습니다 그래서 0함께있는 잎 우리를 1같은 0100100101.

우리가 한 번 더 자리가 필요한 경우가로 교체 그래서 1.

우리가 채우기에 두 자리가있을 때 지금 무슨 일이 같은 일이 010010010xx? 우리는 사용할 수 없습니다 00마지막 때문에 0인접한가없는 것입니다 1.

  • 우리가 사용할 수 01? YES : 우리가 얻을 것이다 때문에 모두 0 인접한가 101001001001
  • 우리가 사용할 수 10? YES : 우리가 얻을 것이다 때문에 여기 모든 0 인접한가 101001001010

우리는 11을 확인해야할까요? 아니 우리는 이미 사용할 수 있기 때문에 01또는 10하나 개 추가하는 1동안이 11두 가지를 추가 1하는 결과가 최소한의 금액을 포함하지 않을 수 있도록 1.


내가 당신에게 그 방법을 사용하여 코드를 작성 떠날 것이다.

추천

출처http://43.154.161.224:23101/article/api/json?id=118055&siteId=1