問題:重複從字符串s
中刪除子串t
,並打印執行相同操作的步驟數。反覆從字符串中刪除子串
實施例:t = ab
,s = aabb
。在第一步中,我們檢查t
是否包含在s
之內。這裏,t包含在中間,即a(ab)b
。因此,我們將刪除它,結果將爲ab
並將計數值增加1
。我們再次檢查s
是否包含t
。現在,t
等於s
,即(ab)
。所以,我們從s
中刪除它並增加計數。因此,由於t
不再包含在s
中,因此我們停止並打印計數值,在此情況下爲2
。
我試圖解決這個使用遞歸
static int maxMoves(String s, String t) {
if (null == s || "" == s || null == t || "" == t){
return 0;
}
int i = s.indexOf(t);
if(i != -1) {
return maxMoves(s.substring(0, i)+ s.substring(i+t.length(), s.length()), t) + 1;
} else {
return 0;
}
}
但我只是路過9/14測試用例。我也試過這個,
static int maxMoves(String s, String t) {
int count = 0,i;
while(true)
{
if(s.contains(t))
{
i = s.indexOf(t);
s = s.substring(0,i) + s.substring(i + t.length());
}
else break;
++count;
}
return count;
}
但那也只是通過了9/14例。
任何人都可以幫我找出哪些情況下我不覆蓋?
[字符串替換#(https://docs.oracle:如果在它的緩衝區要替換字符串結尾的任何時候,將其刪除。 com/javase/7/docs/api/java/lang/String.html#replace(java.lang.CharSequence,%20java.lang.CharSequence)) –
'「」== s' - > [如何比較字符串在Java?](https://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java),或在這種情況下's.isEmpty()'更清晰。 – Pshemo
是的,我改變了它,但仍然只有9/14例正在通過。我不認爲空串被檢查。 –