gpt4 book ai didi

java - 重复从字符串中删除子字符串

转载 作者:行者123 更新时间:2023-11-29 06:28:06 24 4
gpt4 key购买 nike

问题:删除子字符串 t来自字符串 s , 重复并打印执行相同操作所涉及的步骤数。

示例: t = ab , s = aabb .在第一步中,我们检查是否 t包含在 s 中.这里,t 包含在中间,即 a(ab)b .因此,我们将删除它,结果将是 ab并将计数值增加 1 .我们再次检查是否 t包含在 s 中.现在,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 案例。

谁能帮我弄清楚我没有涵盖哪些案例?

最佳答案

您可以简单地使用 String::replaceFirstwhile 循环,例如:

String s = "aabb";
String t = "ab";
int count = 0;
while (s.contains(t)) {
s = s.replaceFirst(Pattern.quote(t), "");
count++;
}

System.out.println(count);

关于java - 重复从字符串中删除子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46854029/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com