条件に基づいて文字列に文字列を変換します

ZAK ZAK:

入力として、私は、「0」を含む文字列オブジェクトを持っています。

入力の例String word = "00000"

質問は、出力として別の文字列にこの文字列を変換することです。

変換は、すべて「0」についての結果は、少なくとも一つの「1」に隣接していることをいくつかの特定の位置に「1」で、いくつかの「0」を置き換えることです。

いくつかの例:

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

私たちが見ることができるように、出力が条件を満たし、すべての「0」は少なくとも一つの「1」に隣接しています。

第2の条件は、私たちが「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 1 0を置き換える必要がありますが、それはすべての単語のための作業をdosen't。

私は、任意の単語を処理できるソリューションを探しています。

Pshemo:

1の最小量を得るために、私たちは、それぞれ1我々は繰り返す必要があることを意味するできるだけ多くの0として処理する必要が010倍の最大量を。だから我々はとゼロを交換し始めることができます010左から

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

場合は010全体の数にこの手段を記入していなかった私たちは、1つまたは2つの以上の数字が必要です。

それが1桁の場合、我々は何をすべき?我々は使用することができ0、ここで?見てみましょう:010010010xになるでしょうか0100100100
それは有効な結果ですか?NO最後のゼロは任意の持っていないので1、それに近いが。使用することはできません我々はそう0で私たちを残している1ような0100100101

私たちはもう一桁を必要とするのであれば、私たちはと交換してください1

我々は埋めるために2桁の数字を持っている場合今何が同じように、起こりますか010010010xx私たちは、使用することはできません00最後はので、0任意の隣接を持っていないでしょう1

  • 我々は使用することができますか01YES:私たちがなりますので、すべて0が隣接してい101001001001
  • 我々は使用することができますか10YES:私たちがなりますので、ここでも全て0が隣接してい101001001010

私たちは11をチェックすべきか?ノー我々はすでに使用することができますので、01または101つの追加している1間に112が追加され1、その結果は、最小限の量を含まないように1


私はあなたにそのアプローチを使用して書き込みコードを残します。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=118058&siteId=1