Java排列组合字符串的实例及原理

  • 更新时间:2020-06-14 06:53:26
  • 编辑:扈宁乐

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

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

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

相关教程

  • Java中连续重复字符去重方法

    今天小编就为大家分享一篇Java中字符串中连续相同字符去重方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

    发布时间:2020-03-14

  • java统计文件中每个字符出现个数的代码

    这篇文章主要为大家详细介绍了java统计文件中每个字符出现的个数,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    发布时间:2020-05-05

  • Java String字符串和Unicode字符相互转换实例代码

    这篇文章主要介绍了Java String字符串和Unicode字符相互转换代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习

    发布时间:2019-12-24

  • Java语言中一个字符占的字节数详解

    这篇文章主要介绍了Java语言中一个字符占几个字节,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    发布时间:2019-07-25

  • Java实现中文字符串与unicode互转工具类方法详解

    这篇文章主要为大家详细介绍了Java实现中文字符串与unicode互转的工具类,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    发布时间:2019-07-29

  • java实现统计字符串中大小写字母及数字出现次数的实例

    这篇文章主要介绍了java实现统计字符串中大写字母,小写字母及数字出现次数的方法,涉及java针对字符串的遍历、判断、运算相关操作技巧,需要的朋友可以参考下

    发布时间:2019-07-01

  • Java中转义字符反斜杠╲的代替方法及repalceAll用法分析

    这篇文章主要介绍了Java中转义字符反斜杠\的代替方法及repalceAll内涵解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一

    发布时间:2020-01-30

  • 实例讲述Java使用正则表达式截取重复出现的XML字符串功能

    这篇文章主要介绍了Java使用正则表达式截取重复出现的XML字符串功能,涉及java针对xml字符串及指定格式字符串的正则匹配相关操作技巧,需要的朋友可以参考下

    发布时间:2020-03-12

  • 疯狂HTML5+CSS3+JavaScript讲义

    疯狂HTML5+CSS3+JavaScript讲义

    大小:132.1 MB前端电子书

  • Java攻略:Java常见问题的简单解法

    Java攻略:Java常见问题的简单解法

    这书以案例方式撰写,包含Java8和Java9的新特点,并得出了70多个能够用以具体开发的实例,致力于让阅读者把握怎样运用这种新特点来处理开发中碰到的各种各样难题。

    大小:1297 MB MBJava问题解决

  • Java面试手册(350道面试题)

    Java面试手册(350道面试题)

    如何就业?如何找到一份满意的工作?如何升职加薪?这些一直是我们java程序员老生常谈的问题!我们从企业的招聘需求已经面试题来分析一下,当下java程序员应该选择往那方面进阶 收集100家知名企业近年来java面试题合集总汇! 你要的这里都有;企业要的这里也有;面向底层、架构,单刀直入!这些全部是题目跟类目,每个题目都会有相对的答案。350道java面试题收集整理,包含了上百家企业近年的人才计划,需要的朋友可下载试试! 目录 一、性能

    大小:2.4 MBJava面试

  • Java编程的逻辑

    Java编程的逻辑

    《Java编程的逻辑》作者马俊昌,从基本概念到高层框架,剖析实现原理与JDK源代码,融合专业理论与应用实践,透彻理解Java编程的思维逻辑。

    大小:39.3MJava编程电子书

  • JavaScript核心技术开发解密

    JavaScript核心技术开发解密

    这本书针对JavaScript 中的核心技术,结合前沿开发实践,全面的讲解与分析JavaScript 的内存、函数、执行上下文、面向对象、模块等重点知识

    大小:68.4 MBJavaScript电子书

  • 明解Java

    明解Java

    这是一本更适合入门的Java编程书,图文并茂,示例丰富,通过284幅图表和258段代码,由浅入深地解说了从Java的基础知识到面向对象编程的内容

    大小:63.8 MBJava编程电子书

  • JavaScript启示录

    JavaScript启示录

    《JavaScript启示录》无关于JavaScript设计模式,也无关于JavaScript面向对象代码实现。《JavaScript启示录》意图通过考察原生JavaScript对象和不同环境对原生对象的支持和细微差别。

    大小:24.4 MBJS电子书

  • Java程序设计基础

    Java程序设计基础

    《Java程序设计基础》是一本关于java的电子书资源,涉及Java、程序设计等相关内容,本文提供大小为158MB的扫描第5PDF格式电子书下载,希望大家能够喜欢。

    大小:158 MBjava电子书

  • Java高并发编程详解:多线程与架构设计

    Java高并发编程详解:多线程与架构设计

    《Java高并发编程详解》立足于线程源码剖析,从基础入手,逐层渐进深入,环环紧扣,针对技术细节进行了细致归纳,在解读源码的时候又引入了优秀的架构设计。

    大小:120.77 MBJava编程电子书

  • 零基础学Java(第4版)

    零基础学Java(第4版)

    零基础学Java(第4版) 一共分为四篇,共25章,循序渐进地讲述了Java语言的语法规则,Eclipse和MyEclipse开发环境的使用,从基本概念到具体实践、从入门知识到高阶主题、从语法语义到数据结构

    大小:29.7 MBJava学习电子书

用户留言