gpt4 book ai didi

java - 使用递归从字符串中删除子字符串

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:39:46 24 4
gpt4 key购买 nike

我正在尝试解决一个问题,我需要使用递归从字符串中删除特定的子字符串。我能够使用 do while 循环解决此问题,但这不是最佳方法。

例如,假设我有一个名为 DADDAUUPPA 的字符串,如果给我一组子字符串,如“DD”、“UU”、“PP”、“AA”,那么返回的字符串应该是 DA,因为 DADDAUUPPA -> DAAUUPPA -> DUUPPA -> DPPA -> DA

这是我使用 while 循环的解决方案。

    String s = "DADDAUUPPA";
do{
String original = s;
return original.replace("DD","").replace("UU","").replace("PP","").replace("AA","" );
} while(!original)

另一个具有挑战性的任务是,如果我们将这些子字符串作为一个数组,我们将如何处理?

For example,
public soln (String[] sub) {
// sub contains all the substring to be removed
}

最佳答案

解决方法

import java.util.LinkedList;
import java.util.List;

public class Main {

public static void main(String[] args) {
List<String> subs = new LinkedList<>();
subs.add("DD");
subs.add("AA");
subs.add("UU");
subs.add("PP");
String result = getSubString(subs, "DADDAUUPPA ");
System.out.print(result);
}

private static String getSubString(List<String> subs, String myString) {
if(subs !=null && subs.size() != 0) {
String sub = subs.get(0);
subs.remove(0);
myString = getSubString(subs, myString.replace(sub, ""));
}
return myString;
}

要学习的关键是

private static String getSubString(List<String> subs, String myString) {
if(subs !=null && subs.size() != 0) {
myString = myString.replace(subs.get(0), "");
subs.remove(0);
getSubString(subs, myString);
}
return myString;
}

这不起作用,请注意第一个和第二个 getSubString 方法之间的区别。随着堆栈展开,myString 被分配给原始值。

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

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