【发布时间】:2014-08-26 01:54:32
【问题描述】:
首先,我要说英语不是我的第一语言,所以对于任何糟糕的解释,我深表歉意。
我想知道如何获取具有这么多不同顺序的字符串的每个子字符串。在你告诉我之前有人问过这个问题之前,我想说的是,我看到的这个任务的几乎每个代码实现都不包含重复项。但是假设我有一个字符串“环境”,我想要每个子字符串,包括“ment”、“met”、“ten”、“net”、“note”、“more”等,我将如何实现这个??
这是我写的函数。
public static ArrayList<String> getAllSubstringsOfAString(String inputString)
{
ArrayList<String> allSubstrings = new ArrayList<String>();
String sub;
for(int i = 0; i < inputString.length(); i++)
{
for (int j = 1; j <= inputString.length() - i; j++)
{
sub = inputString.substring(i , i + j);
allSubstrings.add(sub);
}
}
return allSubstrings;
}
当我运行这个函数时
public static void main(String[] args) throws IOException {
ArrayList<String> allSubStrings = getAllSubstringsOfAString("environment");
for (String allSubString : allSubStrings) {
System.out.println(allSubString);
}
打印出来
e
en
env
envi
envir
enviro
environ
environm
environme
environmen
environment
n
nv
nvi
nvir
nviro
nviron
nvironm
nvironme
nvironmen
nvironment
v
vi
vir
viro
viron
vironm
vironme
vironmen
vironment
i
ir
iro
iron
ironm
ironme
ironmen
ironment
r
ro
ron
ronm
ronme
ronmen
ronment
o
on
onm
onme
onmen
onment
n
nm
nme
nmen
nment
m
me
men
ment
e
en
ent
n
nt
t
这只是我想要的一小部分。我希望该函数能够按每个顺序获取子字符串。例如,如果我希望它包含“net”、“ten”、“never”等字符串,因为它们都是“environment”这个词的子字符串。为了实现这一点,我必须对我的功能进行哪些更改?
另外,由于我是一名 Java 初学者,我想知道我的代码是否写得好,以及我可以对我的代码进行哪些更改以使其性能和外观更好,并遵循常见的 Java 编码约定。
提前致谢
【问题讨论】:
-
好吧,您可以编写一个算法来写入所有子字符串,然后您可以将它们全部反转并添加到您的列表中。
-
但“十”并不完全是一个子字符串,尽管您可以通过重用字符串中出现的相同字母来获得这个词
-
@Leo“十”不是子串???那它叫什么?我如何将它添加到我的 arrayList 中?
-
这是子串之一的排列
-
@Kaylo17 它之所以被称为“字符串”,是因为它是一个字母序列。所以我们可以说“ent”是“environment”的子串,但“ten”不是。如果您还想在给定“环境”之类的字符串的情况下获得诸如“十”之类的值,那么您正在寻找的(在我看来)是“环境”一词中出现的字母的排列