0

プレースホルダーがどこにあるのと同じパターンにjava.util.Set<String>従う"200Y2Z", "20012Y", "200829", "200T2K"とします。Javaでそのような文字列から一意のコードだけのセットを取得する最も効率的な方法はどれですか?"200$2$""$"

入力:java.util.Set<String>"200Y2Z", "20012Y", "200829", "200T2K"

期待される出力:java.util.Set<String>"YZ", "1Y", "89", "TK"

私の試み::

public static void getOutPut()
    {
        Set<String> input = new HashSet<String>();
        Set<String> output = new HashSet<String>();
        StringBuffer out = null;
        for(String in : input)
        {
            out = new StringBuffer();
            StringCharacterIterator sci = new StringCharacterIterator(in);
            while (sci.current( ) != StringCharacterIterator.DONE){
                if (sci.current( ) == '$')
                {
                    out.append(in.charAt(sci.getIndex()));
                }
                sci.next( );
            }
            output.add(out.toString());
        }

        System.out.println(output);
    }

正常に動作していますが、これを達成するための効率的な方法はありますか? 1000Kを超えるコードに対してそれを行う必要があります。

4

1 に答える 1

1

パターン内のプレースホルダーのインデックスを取得します。

int i = pattern.getIndexOf('$');

すべてのインデックスを取得するには、反復する必要があります。

pattern.getIndexOf('$', lastIndex+1);

ループとチェックはあなた次第です。

次にcharAt、セットの各要素のインデックスを使用します。

于 2014-12-12T07:40:41.013 に答える