这是我与我的一位朋友进行的一次辩论:制作一个valiation方法的最快方法是检查给定字符串是否具有一个不允许的字符串人物用于在给定字符串中搜索字符集的最快算法
方法一:简单
char [] invalidChars = "[email protected]#$%^...".toCharArray();
for (int i = 0; i < myString.length(); i++) {
char ch = myString.charAt(i);
for (int j = 0; j < invalidChars.length; j++) {
if (invalidChars[j] == ch) {
return false;
}
}
}
方法二:开拓地图的O(1)
Map <String,String> map = new HashMap<String, String>();
map.put("!", null);
map.put("@", null);
map.put("#", null);
map.put("$", null);
map.put("^", null);
...
for (int i = 0; i < labels.length(); i++) {
char ch = labels.charAt(i);
if (map.containsKey(ch)) {
return false;
}
return true;
}
的方法其实我是N2,但如N好时invalidChars是少号。 案例一应该优先考虑什么:有很多无效字符,案例二:只有少数无效字符?
注:我没有找任何内置的Java解决方案,但是,只是算法,如果你只在验证ASCII字符兴趣来过滤一些(不是全部)非文本字符
虽然这可能是一个解决方案,但它不是真正的问题的答案。 – 2011-02-01 08:32:39