import java.util.ArrayList;
import java.util.Scanner;/*** 7、 编程列出一个字符串的全字符组合情况,原始字符串中没有重复字符,例如:* 原始字符串是"abc",打印得到下列所有组合情况:* "a" "b" "c"* "ab" "bc" "ca" "ba" "cb" "ac" * "abc" "acb" "bac" "bca" "cab" "cba"*/
public class Test7 {public static void main(String[] args) {System.out.println("请输入一个字符串:");String str = new Scanner(System.in).nextLine();printGroups(str);// 打印字符串的所有组合}/*** printGroups 该函数用于打印所有的字符串组合* @param str 传入的原始字符串*/public static void printGroups(String str) {char[] chs = str.toCharArray();//原始字符串转化为数组ArrayList<String> list = new ArrayList<String>();//存储所有的组合for (char ch : chs) list.add("" + ch);//向集合list添加所有的长度为1的字符串组合ArrayList<String> tempList = null;//第1次循环,实现向集合list添加所有长度为2的组合,//第2次循环,实现向集合list添加所有长度为3的组合,....//第(n-1)次循环,实现向集合list添加所有长度为n的组合。for (int k = 0; k < chs.length; k++) {tempList = select(list, k + 1);// 过滤出长度为 (k+1)的字符串getTempGroup(chs, tempList, list);// 获取长度为(k+2)的字符串组合,并存入集合}// 遍历集合输出所有的组合for (String s : list)System.out.println(s);System.out.println("组合的总个数为: " + list.size());}/*** getTempGroup 在第k次循环时,获取所有长度为(k+1)的组合,并添加到list集合* @param chs 输入字符串对应的字符数组* @param tempList 第k次循环时,存储的是长度为(k+1)的所有字符串组合* @param list 存储所有的字符串组合* * 基本思路:获取n个不重复字符的所有排列组合:*       1  获取n个不重复的字符*      2 获取所有的长度为(n-1)的组合*         3 依次将单个字符与所有长度为(n-1)的字符串拼接,即可得到长度为n的所有组合 */private static void getTempGroup(char[] chs, ArrayList<String> tempList,ArrayList<String> list) {int n = tempList.size();for (int i = 0; i < chs.length; i++) {for (int j = 0; j < n; j++) {if (!tempList.get(j).contains("" + chs[i])) {// 字母没有重复list.add("" + chs[i] + tempList.get(j));}}}}/*** * @param list 需要被过滤的集合* @param i 希望过滤出的字符串的长度* @return as 返回存储所有长度为i的字符串的集合*/private static ArrayList<String> select(ArrayList<String> list, int i) {ArrayList<String> as = new ArrayList<String>();for (String s : list) {if (s.length() == i)as.add(s);}return as;}
}

java练习: 编程列出一个字符串的全字符组合情况,原始字符串中没有重复字符,例如:相关推荐

  1. java构造实部与虚部,【跪求】【Java】编程实现一个复数类Complex,要求其实部和虚部用private的成员变量表达...

    [跪求][Java]编程实现一个复数类Complex,要求其实部和虚部用private的成员变量表达 关注:189  答案:4  手机版 解决时间 2021-02-26 05:37 提问者怪咖 202 ...

  2. (java)给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。

    给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度. public class LengthOfLongestSubstring {public int lengthOfLonges ...

  3. 输入一个长度不超过100的字符串,删除串中的重复字符。

    #include <stdio.h> #include <string.h> #define N 200 int main() { char a[N]; //存储字符串. in ...

  4. 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度

    题目 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: s = "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 &q ...

  5. python作业.创建两个文本框,一个按钮。第 1 个文本框绑定任意键事件,敲击键盘任意可显示字符,在交互窗口中显示该字符;第 2 个文本框绑定<a>键事件,敲击键盘 a 字符,在交互窗口中显示 10

    """ 创建两个文本框,一个按钮. 第 1 个文本框绑定任意键事件,敲击键盘任意可显示字符,在交互窗口中显示该字符: 第 2 个文本框绑定<a>键事件,敲击键 ...

  6. 创建两个文本框,一个按钮。第 1 个文本框绑定任意键事件,敲击键盘任意可显示字符,在交互窗口中显示该字符;

    创建两个文本框,一个按钮.第 1 个文本框绑定任意键事件,敲击键盘任意可显示字符,在交互窗口中显示该字符:第 2 个文本框绑定键事件,敲击键盘 a 字符,在交互窗口中显示 10 个'a'字符:按钮绑定 ...

  7. 《JAVA》编程创建一个Box类(长方体),在Box类中定义三个变量

    问题:编程创建一个Box类(长方体),在Box类中定义三个变量,分别表示长方体的长(length).宽(width)和高(heigth),再定义一个方法void setBox(int l, int w ...

  8. Java并发编程实战笔记2:对象的组合

    设计线程安全的类 在设计现车让安全类的过程之中,需要包含以下三步: 找出构成对象状态的所有变量 找出约束状态变量的不变性条件 建立对象状态的并发访问策略 实例封闭 通过封闭机制与合适的加锁策略结合起来 ...

  9. python输入多个字符串、输入最长的一串_无重复字符的最长子串(Python之暴力求解)...

    无重复字符的最长子串(Python之暴力求解) 例题: 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例: (1) 输入: "abcabcbb" 输出: 3 ...

最新文章

  1. 学习API网关遇到的名词
  2. maven scope含义的说明
  3. (七)boost库之单例类
  4. content属性的4种用途
  5. Python爬虫_乱码、转码
  6. scala 高阶函数,闭包及柯里化
  7. 了解Mysql与MariaDb的关系
  8. 2021-05-17 吾日三省吾身
  9. 项目管理十大知识领域(二)--- 项目范围管理(过程、输入、工具和技术、输出)
  10. buuctf web wp
  11. 能上QQ,无法打开网页解决办法!!!(亲测能用)
  12. 会考计算机基本知识点总结,高中计算机会考基本知识点
  13. PHP之Smarty
  14. shiro的anon部分失效
  15. chrome 切换标签页快捷键_如何在Chrome浏览器中切换标签页
  16. 零基础Bootstrap入门教程(16)--模态框
  17. EPICS -- 测试asynDriver和设备支持的示例1-- 连接测试
  18. JS(五):JS的window对象之window相关方法、定时器
  19. java静态方法详解
  20. 分享一个高清大图的网站

热门文章

  1. 60秒,我们可以干什么?
  2. 斯洛文尼亚接受BCH支付的商家达343家,日本和北昆士兰州对BCH接受度增长迅速
  3. BCH压力测试悄然开始?有优势但也有不足!
  4. python:面向对象初级
  5. 实体银行网点一定被消灭?银行如何平衡数字创新与线下体验?
  6. 使用bat文件实现批量重命名功能
  7. C# Revert 单词反转字符串!『测试通过』
  8. C#线程学习的一点体会和总结
  9. winform 控件半透明设置
  10. 兼容微信小程序的流式网络请求库