我想写一个简单的类来处理字符串(可能是字符串长达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