【发布时间】:2016-04-11 04:33:33
【问题描述】:
如何修改我的代码,以便删除O(n) 中另一个字符串中的给定字符串(不仅仅是字符串)中的所有字符?如果使用其他数据结构会有所帮助,请同时提示。
public static String removeChar(String s, char ch){
StringBuilder sb= new StringBuilder();
char[] charArray= s.toCharArray();
for (int i=0; i<charArray.length; i++){
if (charArray[i]!=ch) {
sb.append(charArray[i]);
}
}
return sb.toString();
}
有没有更快的方法呢?
更新:我想写一个像removeAllCharsInSecondStringFromFirstString(String S1, String S2)这样的新函数
【问题讨论】:
-
必须自己实现吗?
newStr = origStr.replaceAll("[abcde]*", "")看起来对我来说很诱人...... -
我更喜欢自己实现它来练习是的。我见过
replaceAll -
Guava 的
CharMatcher类也非常适合这类事情。 -
据我了解,您必须将第一个字符串的每个字符与第二个字符串中的每个字符进行匹配,这将始终导致
O(n*m)
标签: java string data-structures replace time-complexity