当前位置: 移动技术网 > IT编程>开发语言>Java > Java排列组合字符串的方法

Java排列组合字符串的方法

2019年07月19日  | 移动技术网IT编程  | 我要评论

例如 输入“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;
  }
}

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

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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网