java string查找子串"/>
java string查找子串
参见英文答案 > Memory efficient power set algorithm 5个
我试图在Java中找到每个可能的字符串字符串 – 我的意思是,如果我有一个4个字符长的单词,我想要从它派生的所有可能的3个字符长单词,所有2个字符长,所有1性格长.我最直接的方法是在字符串上使用两个嵌套的for循环和iterare.这是我现在的代码:
private ArrayList subsets(String word){
ArrayList s = new ArrayList();
int length = word.length();
for (int c=0; c
for (int i=0; i
String sub = word.substring(c, c+i+1);
System.out.println(sub);
//if (!s.contains(sub) && sub!=null)
s.add(sub);
}
}
//java.util.Collections.sort(s, new MyComparator());
//System.out.println(s.toString());
return s;
}
我的问题是它适用于3个字母的单词,有趣的是这个结果(不介意排序,单词被处理,以便我有一个字母顺序排列的字符串):
f
fn
fnu
n
nu
u
但是当我尝试4个字母的单词时,它会留下一些东西,就像catq给我的那样:
a
ac
acq
acqt
c
cq
cqt
q
qt
t
也就是说,我没有看到3个字符的长字行为 – 这是我在测试这种方法时所寻找的那个.我无法理解问题所在,而且这很可能是我在创建子串时所犯的逻辑错误.如果有人可以帮助我,请不要给我代码,而是给你解决方案背后的原因.这是一个课程作业,我需要自己提出代码.
编辑:清除一些东西,对我来说,acq,qca,caq,aqc,cqa,qac等都是一回事 – 为了使它更清晰,会发生的是字符串按字母顺序排序,所以这些排列应该是一个独特的结果,acq.所以,我不需要字符串的所有排列,而是给定一个4个字符长的字符串,我可以从中得到所有3个字符长的字符串 – 这意味着一次取出一个字符并返回该字符串结果,为原始字符串中的每个字符执行此操作.
我希望我的问题更加清晰
解决方法:
它工作正常,你在测试/输入中拼错了“caqt”作为“acqt”.
(问题可能在于您正在对输入进行排序.如果您想要substrings,则必须保持输入未排序.)
标签:java,substring,arraylist,for-loop,string
来源: .html
更多推荐
java string查找子串
发布评论