文字列を処理するための簡単なクラスを書いています(1milまでの非常に長い文字列かもしれません)。文字列は基本的に2つの文字 "a"と "b"で構成され、互いに混在しています。 aとbの数が等しい場合、アプリはそれ以外の場合はNOKと答えます。私はそれを最も効率的に行う方法を知っています。私は正規表現を使ってStringを分割し、aとbの出現回数を数えることを考えましたが、おそらく誰かがそれを行う良い方法を知っています。比較的新しい正規表現ですので、バグがあれば教えてください。これは私の初期の試みです。文字列中の指定された文字の数を確認してください
public class Typo {
public static void main(String[] args){
String ver = "";
int na = 0;
int nb = 0;
String regex = ("\\w.+");
Pattern p = Pattern.compile(regex);
String text = "ababababbaba";
if (text.length() == 0){
ver = "OK";
}
else if (text.length() == 1){
ver = "NOK";
}
else if ((text.length() % 2) == 1){
ver = "NOK";
}
else if ((text.length() % 2) == 0){
//check number of a and b and if it equals return OK otherwise NOK
Matcher m1 = p.matcher("a");
while(m1.find()){
na = na + 1;
}
Matcher m2 = p.matcher("b");
while(m2.find()){
nb = nb + 1;
}
if (na == nb){
ver = "OK";
}
else
ver = "NOK";
}
System.out.println(ver);
}
}
は、それは文字の上にちょうどループにはるかに容易にし、それぞれの数をカウントしませんか?正規表現の使用がより高速になるとは信じられませんが、これはベンチマークには些細なことです。あなたは? –
現在、私は "abbb"のようなStringに問題があります。また、非常に長い文字列の最適化の問題もあります。 – aretai
@ Dave私は、パフォーマンスが何がより速いかを心配する限りは分かりません。私はv.longの文字列の正規表現が速くなるかもしれないとは思ったが、わからない。どのように私の文字列にそのような繰り返しを実行することをお勧めしますか? – aretai