私は私が興味入力から私にいくつかの組み合わせのペアを与える正規表現を作成しようとしているとの言葉を生成する。正規表現は、連続した文字
私は、次の入力を持っていた場合...
"pppeeeople"
私は、次の順列...
人、ppeeople、peeople、ppeopleを作成したいと思います。
入力単語が「pppeeeople」の次の2つのREGEXで、「人」と「ppeeople」を作成できます。
String temp = word.replaceAll("(.)\\1{2,}", "$1$1"); //result ppeeople
String temp2 = word.replaceAll("(.)\\1{1,}", "$1"); //result people
私は、最初のinputed二重文字列をスキップすることができます「ppeople」、その後、別のREGEXとしても2つのconsective文字の1セットで単語をつかむことができREGEXを生成できるようにしたいと思いますが「ピープル」などを生み出す。基本的な考え方は、2つの連続する文字を含む単語のすべての順列を得ることです。
これはREGEXで可能ですか?または、ループとStringBuilderをリストに使用するだけですか?
これは近いですが、それは境界のインデックスエラーの外に生成し、私はまだ私はそれを追加しているのArrayListの繰り返しから重複を削除する必要があります。
int index = temp.length();
for (int i = 0; i < index; i++) {
System.out.println("Index" + i + ": " + temp);
if(temp.charAt(i) == temp.charAt(i+1)) {
StringBuilder sb = new StringBuilder(temp);
repeats.add(temp);
sb.deleteCharAt(i);
temp = sb.toString();
}
}
"ループとStringBuilderをリストに使用するだけですか?"ほとんどの場合、はい。 – Sneftel
より良いアプローチは、バックトラック再帰で文字列を構築することです。あなたがこのようなことが必要な場合、私はあなたのためにスニペットを書くことができます。 –
私はそうですが、再帰はStringBuilderや部分文字列メソッドを使うよりも良いでしょうか?私は、ほとんど私が欲しいものをやっているが、まだかなりはしていない、ぐずぐずな部分文字列ループを行っている。 – Yawn