java给xyz大小排序_java递归实现string xyz排序
发布日期:2021-06-24 15:01:10 浏览次数:3 分类:技术文章

本文共 953 字,大约阅读时间需要 3 分钟。

0818b9ca8b590ca3270a3433284dd417.png

先用上面的一张图说明逻辑,这就是递归的逻辑。

xy排序就相当于在x的空位插上y,x只有两个空位,y插前面得带yx,y插后面得到xy

xyz排序就相当于在xy排序的所有结果插上z,结果如图

代码实现如下

public static void main(String[] args){

List list = sort("xy","k");

for(String s:list){

System.out.println(s);

}

}

public static List sort(String main,String insert){

List result  = new ArrayList<>();

if(main.length() == 1){

result.add(main+insert);

result.add(insert+main);

}else{

List lastResult = sort(main.substring(0,main.length()-1),main.substring(main.length()-1));

for(String s:lastResult){

int insertIndex = 0;

while(insertIndex<=s.length()){

if(insertIndex == 0){

result.add(insert+s);

}else if(insertIndex == s.length()){

result.add(s+insert);

}else{

result.add(s.substring(0, insertIndex)+insert+s.substring(insertIndex, s.length()));

}

insertIndex++;

}

}

}

return result;

};

测试结果是:zxy;xzy;xyz;zyx;yzx;yxz;

另外测试abcd排序结果是:dcab;cdab;cadb;cabd;dacb;adcb;acdb;acbd;dabc;adbc;abdc;abcd;dcba;cdba;cbda;cbad;dbca;bdca;bcda;bcad;dbac;bdac;badc;bacd;

转载地址:https://blog.csdn.net/weixin_33520510/article/details/114224288 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:arctime必须要java_Arctime使用教程 Arctime常见问题解答
下一篇:java socket唯一标识符_Java Socket编程之常识网络基础知识

发表评论

最新留言

第一次来,支持一个
[***.219.124.196]2024年03月30日 16时26分27秒