java string查找子串_java – 查找给定字符串的每个可能的子集

参见英文答案 > 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

来源: https://codeday.me/bug/20190702/1361334.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值