本文主要是介绍Java 排列组合字符串,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
例如 输入“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 {@Testpublic 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;}
}
如有更简洁的代码实现,请不要吝啬,贴出来分享下。
这篇关于Java 排列组合字符串的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!