我想寫一個簡單的類來處理字符串(可能是字符串長達1mil字符)。字符串基本上由兩個可能相互混合的字符「a」和「b」組成。如果a的數量等於b的話,那麼應用程序會說它是OK的,否則NOK。我想知道如何最有效地做到這一點。我想用正則表達式來分割字符串,然後計算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);
}
}
那豈不是更容易剛過字符循環和計數各是多少?我發現不可能相信使用正則表達式會更快 - 但這對於基準來說是微不足道的。你有嗎? – 2012-01-29 19:20:44
目前我有一個字符串問題,如「abbb」,因爲他們返回好的時候,他們不應該。而且對於很長的字符串也有優化問題。 – aretai 2012-01-29 19:21:17
@戴夫我不確定就績效而言,速度更快。我認爲對於v.long字符串正則表達式可能會更快,但我不確定。你會如何建議在我的字符串上執行這樣的迭代? – aretai 2012-01-29 19:22:39