我寫了這個函數作爲面試練習的一部分。此方法從給定字符串中刪除字符。有效地從字符串中刪除字符
我想知道如何讓這段代碼在運行時/空間上更高效。我認爲我的代碼是O(n),我不確定我是否可以提高效率。但是,也許使用諸如StringBuffer或StringBuilder之類的東西會增加一些呢?不確定,因爲我對Java還是一個新手。
public static String takeOut(String str, char c) {
int len = str.length();
String newstr = "";
for (int i = 0; i < len; i++) {
if (str.charAt(i) != c) {
newstr = newstr + str.charAt(i);
}
}
return newstr;
}
沒有,這絕對是*不*爲O(n)。想一想'newstr = newstr + str.charAt(i)'需要做什麼。想象一下,所有n個字符都不是你要找的那個。 (是的,StringBuilder就是你要找的東西。)請參閱http://yoda.arachsys.com/java/stringbuffer.html - 很久以前寫的,但只是用'StringBuilder'替換'StringBuffer'。 –
'replaceAll()'怎麼辦? – shyos
爲什麼不使用'str.replaceAll(c +「」,「」)'? – makata