Java排列组合字符串的方法

 更新时间:2018年02月05日 09:32:53   作者:一缕阳光直射你的心扉  
这篇文章主要介绍了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 {

  @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;
  }
}

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

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

相关文章

  • Spring Boot中实现定时任务应用实践

    Spring Boot中实现定时任务应用实践

    定时任务一般是项目中都需要用到的,可以用于定时处理一些特殊的任务。下面这篇文章主要给大家介绍了关于Spring Boot中实现定时任务应用实践的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下。
    2018-05-05
  • SpringBoot入坑笔记之spring-boot-starter-web 配置文件的使用

    SpringBoot入坑笔记之spring-boot-starter-web 配置文件的使用

    本篇向小伙伴介绍springboot配置文件的配置,已经全局配置参数如何使用的。需要的朋友跟随脚本之家小编一起学习吧
    2018-01-01
  • 在RedisTemplate中使用scan代替keys指令操作

    在RedisTemplate中使用scan代替keys指令操作

    这篇文章主要介绍了在RedisTemplate中使用scan代替keys指令操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • java去掉文本中多余的空格与空行实例代码

    java去掉文本中多余的空格与空行实例代码

    在最近的一个项目中发现用户提交的数据中多了很多多余的空格与空行,为了不影响使用,只能想办法去掉了,下面这篇文章主要给大家介绍了关于java去掉文本中多余的空格与空行的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-08-08
  • mybatis快速上手并运行程序

    mybatis快速上手并运行程序

    MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO为数据库中的记录
    2022-01-01
  • springmvc图片上传及json数据转换过程详解

    springmvc图片上传及json数据转换过程详解

    这篇文章主要介绍了springmvc图片上传及json数据转换过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • IDEA项目使用SpringBoot+MyBatis-Plus的方法

    IDEA项目使用SpringBoot+MyBatis-Plus的方法

    这篇文章主要介绍了IDEA项目使用SpringBoot+MyBatis-Plus的方法,本文分步骤通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-10-10
  • springboot DTO字符字段与日期字段的转换问题

    springboot DTO字符字段与日期字段的转换问题

    这篇文章主要介绍了springboot DTO字符字段与日期字段的转换问题,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • Java进阶之SPI机制详解

    Java进阶之SPI机制详解

    Java SPI机制在很多大型中间建码,例如Dubbo中均有采用,属于高级Java开发的进阶必备知识点,务必要求掌握.文中有非常详细的代码示例及解释,需要的朋友可以参考下
    2021-05-05
  • Java当中让事务回滚的几种方式

    Java当中让事务回滚的几种方式

    这篇文章主要给大家介绍了关于Java当中让事务回滚的几种方式, 事务回滚通常用于在某些操作失败时取消之前已执行的所有操作,这样,我们就可以保证数据的一致性,需要的朋友可以参考下
    2023-08-08

最新评论