博客
关于我
强烈建议你试试无所不能的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/

你可能感兴趣的文章
Python学习笔记——20170828
查看>>
Python学习笔记——20170830
查看>>
Python学习笔记——20170829
查看>>
Python学习笔记——20170831
查看>>
天堂图片网爬虫
查看>>
设计模式——代理模式(Proxy)(静态代理、动态代理)
查看>>
Guava——Joiner与Java8Stream(附Scala示例)
查看>>
Guava——Splitter与Java原生split(附Scala示例)
查看>>
Guava——Strings与CharMatcher
查看>>
一元线性回归示例(原生实现、sklearn实现)
查看>>
多元线性回归示例(原生实现、sklearn实现)
查看>>
设计模式——桥接设计模式(Bridge)
查看>>
设计模式——装饰模式(Decorator)
查看>>
设计模式——外观设计模式(Facade)(门面模式)
查看>>
设计模式——享元模式(FlyWeight)
查看>>
设计模式——责任链模式(Chian Of Responsiblity)
查看>>
设计模式——迭代器模式(Iterator)
查看>>
设计模式——中介者模式(Mediator)
查看>>
设计模式——命令模式(Command)
查看>>
设计模式——策略模式(Strategy)
查看>>