java 字符串全排列_关于Java字符串全排列的问题

首先说一下, static ArrayList list = new ArrayList<>();泛型掉了类型,应该是 new ArrayList();

再说递归,

for(int i=start;i

String str = strs[start];

strs[start] = strs[i];

strs[i] = str;

perm(strs,start+1,end);

strs[i] = strs[start];

strs[start] = str;

先说下递归算法的特点:代码简洁,但逻辑性比较强,理解起来要难一些。再说一下这段程序,关键是上面这段代码的理解,相信你其他的应该都可以看懂。这段代码是指先交换数组strs[i]和strs[start]的值(注意:这个时候数组strs[i]和strs[start]的值已经互换了,已经改变了),再对satrt加一,进行函数递归,最后又把strs[i]和strs[start]的值还原回来(这个时候恢复成为原来的数组)。当start==end的时候,list列表添加入此时数组strs的所有字符串。说的可能比较抽象,你不妨试试几组数据,分别把start,end 设为0,2;0,3;1,3;1;4自己试着写一下,找到思路。这个程序主要是对数组内元素,第start到end元素进行排列组合。并列出所有可能的排列值

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值