gpt4 book ai didi

java - 打印给定字符串中所有可能的子字符串,不重复字符

转载 作者:太空宇宙 更新时间:2023-11-04 13:10:00 27 4
gpt4 key购买 nike

我在这里发现了只打印最大子字符串的子字符串程序。但我正在尝试编写代码来打印给定字符串中的所有可能的子字符串,并且在所有这些子字符串中最大的子字符串也打印在控制台上。所以请任何人都可以帮助我在不使用 String 方法的情况下做到这一点我尝试了这个程序,但我得到的字符串没有下面的重复字符

public class SubSring {
static Scanner sc = new Scanner(System.in);
static String str = sc.nextLine();

public static void main(String[] args) {
String store="";
for (int i = 0; i < str.length(); i++) {
if (store.indexOf(str.charAt(i))<0) {
store = store+str.charAt(i);
}
}
System.out.println("Result word " +store);

}

}

最佳答案

当前的内容将循环遍历 str 中的所有字符,如果字符串中当前不存在这些字符,则将它们添加到 store 中。因此,store 本质上是删除了重复项的 str 的副本。

为了获取 str 的所有可能的子字符串,您需要将 store 更改为字符串集合。 LinkedList 可能是一个合适的选择,因为您不知道会有多少个子字符串,这将允许您轻松添加任意数量的结果。

现在您有一个地方可以放置您需要查找所有可能的子字符串的结果。为此,您将需要两个循环。一个将确定子字符串的开始位置,另一个将确定结束位置。这两个循环的索引之间的所有内容都将是有效的子字符串,您可以将其添加到结果列表中。

所以你的 main 方法应该包含如下内容:

        List<String> store = new LinkedList<String>();
for (int i=0; i< str.length(); i++) {
String substring = String.valueOf(str.charAt(i));
// This is a valid substring so add to results
store.add(substring);
// Loop through the rest of the characters in str adding each
// character to the substring variable.
for (int j=i+1; j<str.length(); j++) {
if (substring.indexOf(str.charAt(j)) < 0) {
substring += str.charAt(j);
// Add each substring to list of results
store.add(substring);
}
}
}

然后您可以循环访问 store 中的每个字符串并将其打印出来。

在现实世界中,您可能需要将可能的子字符串存储在集合中以进行进一步处理,但如果您的要求是简单地打印出每种可能性,您可以在没有列表的情况下执行此操作,如下所示:

           for (int i=0; i< str.length(); i++) {
String substring = String.valueOf(str.charAt(i));
// This is a valid substring so print to console
System.out.println(substring);
// Loop through the rest of the characters in str adding each
// character to the substring variable.
for (int j=i+1; j<str.length(); j++) {
if (substring.indexOf(str.charAt(j)) < 0) {
substring += str.charAt(j);
// Each of these is a valid substring so print to console
System.out.println(substring);
}
}
}

关于java - 打印给定字符串中所有可能的子字符串,不重复字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34062830/

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