从字符串中删除字符是一种更好的方法(时间和空间):

方法1:

String charsToRemove = "abc";
String myString = "abcdef";

myString = myString.replaceAll("["+charsToRemove+"]", "");


方法二:

// Initialized to charsToRemove
HashSet<Character> charsToRemoveSet = ...
Character[] myCharArray = myString.toCharArray();


int dst = 0;
for(int src=0; src<myCharArray.length; src++) {
    if(!charsToRemoveSet.contains(myCharArray[src]))
        myCharArray[dst++] = myCharArray[src];
}

myString = new String(myCharArray, 0, dst);

最佳答案

在外观上,选项1更清晰。仅此一项就足以让我选择它。同样,它也可能更快(尽管这取决于输入的长度)。在选项二中,您将设置第二个循环。 HashSet.contains()运行自己的循环,增加了第二个延迟。

对于短字符串,您可能不会注意到有什么不同,但是再一次,很难说出第二秒发生了什么。

10-08 00:50