博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java给xyz大小排序_java递归实现string xyz排序
阅读量:1541 次
发布时间:2019-04-21

本文共 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;

转载地址:http://slldy.baihongyu.com/

你可能感兴趣的文章
C++ 单词转换例子
查看>>
Dijkstra算法和Floyd算法
查看>>
高质量C/C++编程指南读书笔记(1)
查看>>
高质量C/C++编程指南读书笔记(2)
查看>>
C++标准库:智能指针auto_ptr
查看>>
智能指针shared_ptr
查看>>
C++数据结构之单链表
查看>>
C语言、windows程序设计、汇编笔记(很有用哦)
查看>>
【vn.py】源码解析之 ATR_RSI 策略
查看>>
【vn.py】源码解析之布林通道(BollChannel)策略
查看>>
【vn.py】策略实现之R-Breaker策略
查看>>
【机器学习】机器学习公共数据集整理
查看>>
英文论文写作注意事项整理
查看>>
【vn.py】SpreadTrading价差交易
查看>>
【python量化】国内外基于python开发的量化回测框架
查看>>
【python】如何用python生成并保存gif动态图
查看>>
【机器学习】核函数的理解与常见核函数
查看>>
【一次认识一个市场技术指标】之ATR(真实波幅指标)
查看>>
【一次认识一个市场技术指标】之RSI(相对强弱指标)
查看>>
【一次认识一个市场技术指标】之KDJ(随机指标)
查看>>