欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java排列组合字符串的方法

程序员文章站 2023-11-27 11:26:52
例如 输入“abc”,打印所有可能出现的组合情况,并且消除重复值。 所谓排列组合如下: 排列组合,字符串:abc bca acb abc cba bac c...

例如 输入“abc”,打印所有可能出现的组合情况,并且消除重复值。

所谓排列组合如下:

排列组合,字符串:abc
bca
acb
abc
cba
bac
cab

排列组合个数:6

实现代码(结合java8 lambda表达式实现)

import org.junit.test;

import java.util.arraylist;
import java.util.hashset;
import java.util.list;

public class test2 {

  @test
  public void test3() {


    string input="abc";
    //1.开始排列
    list<string> sortresult = sort(input);
    system.out.println("排列组合,字符串:"+input);
    //2.消除重复列
    hashset h = new hashset(sortresult);
    sortresult.clear();
    sortresult.addall(h);
    //3.打印输出
    sortresult.foreach(e -> system.out.println(e));
    //4.打印个数
    system.out.println("排列组合个数:" + sortresult.size());

  }

  private list<string> sort(string input) {
    list<string> sortlist = new arraylist();
    if (input == null || "".equals(input)) {
      system.out.println("提示:您输入了空字符,请输入有效值!");
      return new arraylist();
    }
    char leftchar = input.charat(0);
    if (input.length() > 1) {
      string rightstring = input.substring(1, input.length());
      list<string> rightstringsortedlist = sort(rightstring);
      rightstringsortedlist.foreach((e) -> {
        for (int i = 0; i < e.length() + 1; i++) {
          sortlist.add(new stringbuffer(e).insert(i, leftchar).tostring());
        }
      });
    } else {
      sortlist.add(string.valueof(leftchar));
    }
    return sortlist;
  }
}

如有更简洁的代码实现,请不要吝啬,贴出来分享下。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。