0
替換那些出現我在工作的代碼,不會在檢查字符串「B」的模式「A」並用String'c'代替。它利用String.split()並通過字符串'a'多次掃描,找到索引來進行替換,並使用StringBuilder來避免對字符串'a'的冗餘複製。所以它以線性時間O(n)運行。現在給定一個字符串「A」 - 檢查字符串中的「A」「B」的出現,並與字符串「C」
,問題是,如果有重疊的模式相匹配,我仍然得到了積極的比賽。例如,在字符串a ='ababa' - >的情況下,我得到兩個匹配字符串b ='aba'。如何通過替換第一個完整匹配來解決這個問題,而不是將剩下的字符'ba'識別爲匹配。如果String c ='c',我期望a ='cba'的結果。
這裏是我的代碼。
public static String replaceSubstringWithPattern() {
String a = "abab";
String b = "aba";
String c = "c";
//Special Cases --> if a or b are empty no need to substitute
if (a.isEmpty() || b.isEmpty()) return a;
StringBuilder aTemp = new StringBuilder();
String[] aArray = a.split(b); // <--
System.out.println("aArray = " + aArray.length);
//Special Cases --> no splits because string a is exclusive repetition of string b
if (aArray.length == 0) {
for (int x = 0; x < a.length()/b.length(); x++) {
aTemp.append(c);
}
return aTemp.toString();
}
aTemp.append(aArray[0]); //firstElement
for (int i=1; i<aArray.length; i++) {
aTemp.append(c);
aTemp.append(aArray[i]);
}
return aTemp.toString();
}
難道你們就不能只是做'a.replaceFirst(B,C);'? – MikeFHay
'result = a.replace(b,c);'? – assylias
如果這是一項家庭作業,請注意它,以便我們可以給予更好的指導而不給予直接的答案,否則給出的答案是完美的。 –