• 剑指Offer(Java版)第三十二题:输入一个字符串,按字典序打印出该字符串中字符的所有排列。 例如输入字符串abc, 则打印出由字符a,b,c所能排列出来的 所有字符串abc,acb,bac,bca,cab和cba。


    /*
    输入一个字符串,按字典序打印出该字符串中字符的所有排列。
    例如输入字符串abc,
    则打印出由字符a,b,c所能排列出来的
    所有字符串abc,acb,bac,bca,cab和cba。
    */

    import java.util.*;

    public class Class32 {

    public ArrayList<String> printNewArray(String str){
    ArrayList<String> result = new ArrayList<String>();
    if(str == null || str.length() == 0){
    return result;
    }
    if(str != null && str.length() > 0){
    printNewArrayMain(str.toCharArray(),0,result);
    Collections.sort(result);;
    }
    return result;
    }

    public void printNewArrayMain(char[] data, int i, ArrayList<String> list){
    if(data == null || data.length == 0){
    return;
    }
    if(i < 0 || i > data.length - 1){
    return;
    }
    if(i == data.length - 1){
    if(!list.contains(String.valueOf(data))){
    list.add(String.valueOf(data));
    }
    }else{
    for(int j = i; j < data.length; j++){
    swap(data,i,j);
    printNewArrayMain(data,i+1,list);
    swap(data,i,j);
    }
    }
    }

    public void swap(char[] data, int i, int j){
    char temp = data[i];
    data[i] = data[j];
    data[j] = temp;
    }

    public static void main(String[] args) {
    // TODO Auto-generated method stub

    }

    }

  • 相关阅读:
    Golang gRPC学习(01): gRPC介绍
    MySQL InnoDB存储引擎大观
    SpringBoot学习-图文并茂写Hello World
    Golang的goroutine协程和channel通道
    业务 产品 技术的一点看法
    需求一直做不完,怎么办?
    技术管理:项目开发中的几种风险管理
    go内存管理
    etcd实现分布式锁分析
    强缓存与协商缓存
  • 原文地址:https://www.cnblogs.com/zhuozige/p/12512486.html
Copyright © 2020-2023  润新知