Java - For循环显示所有唯一子字符串

标签 java string for-loop

我编写了以下 for 循环来显示所提供单词的所有子字符串。然而,要求之一是单词到一仅显示唯一的子字符串。如果“mom”给出以下代码,它会将长度为 1 的子字符串显示为“m”、“o”和“m”,从而给出“m”的重复项。您将如何确保只打印唯一的子字符串?

public static void allUniqueSubStrings(String str) {
    for (int i = 1; i <= str.length(); i++) { 
        for (int j = 0; j + i <= str.length(); j++) { 
            String s = str.substring(j, i+j); 
            System.out.println(s);
        }
    }
}

最佳答案

尝试以下代码。它应该按照您的要求工作。

import java.util.ArrayList;
import java.util.HashSet;
import java.util.Scanner;

final public class Main
{
    public static void main(String...args)
    {
        String string, sub;
        ArrayList<String>al=new ArrayList<String>();

        int i, c, length;

        Scanner in = new Scanner(System.in);
        System.out.print("Enter a string to print it's all unique substrings:->");
        string  = in.nextLine();

        length = string.length();

        System.out.print("Substrings of \""+string+"\" are :->");

        for(c=0;c<length;c++)
        {
            for(i=1;i<=length-c;i++)
            {
                sub = string.substring(c,c+i);
                al.add(sub);
            }
        }

        HashSet hs = new HashSet();
        hs.addAll(al);
        al.clear();
        al.addAll(hs);

        for(String str:al)
        {
            System.out.println(str);
        }
    }
}

删除重复元素的最简单方法是将内容添加到不允许重复的 Set 中,然后将 Set 添加回 ArrayList

关于Java - For循环显示所有唯一子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8695223/

相关文章:

java - 慢慢地尝试用java编写一些代码来说明括号的插入是否正确(算术)

JavaScript 从 00000 循环到 000256

python - 如何打印列表索引

java - 对 JavaDStream 进行排序 - Spark Streaming

java - Java中类级同步是如何实现的?

Java 多个子类,但类型不同

ruby-on-rails - Ruby 字符串转数组方法

java - 使用 Apache http post 查询参数

java - 动态更新 fragment 调用

javascript - 如何遍历 Typescript : for. ..in 中的 map ?为了……的?为每个?