java练习: 编程列出一个字符串的全字符组合情况,原始字符串中没有重复字符,例如:
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练习: 编程列出一个字符串的全字符组合情况,原始字符串中没有重复字符,例如:相关推荐
- java构造实部与虚部,【跪求】【Java】编程实现一个复数类Complex,要求其实部和虚部用private的成员变量表达...
[跪求][Java]编程实现一个复数类Complex,要求其实部和虚部用private的成员变量表达 关注:189 答案:4 手机版 解决时间 2021-02-26 05:37 提问者怪咖 202 ...
- (java)给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。
给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度. public class LengthOfLongestSubstring {public int lengthOfLonges ...
- 输入一个长度不超过100的字符串,删除串中的重复字符。
#include <stdio.h> #include <string.h> #define N 200 int main() { char a[N]; //存储字符串. in ...
- 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度
题目 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: s = "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 &q ...
- python作业.创建两个文本框,一个按钮。第 1 个文本框绑定任意键事件,敲击键盘任意可显示字符,在交互窗口中显示该字符;第 2 个文本框绑定<a>键事件,敲击键盘 a 字符,在交互窗口中显示 10
""" 创建两个文本框,一个按钮. 第 1 个文本框绑定任意键事件,敲击键盘任意可显示字符,在交互窗口中显示该字符: 第 2 个文本框绑定<a>键事件,敲击键 ...
- 创建两个文本框,一个按钮。第 1 个文本框绑定任意键事件,敲击键盘任意可显示字符,在交互窗口中显示该字符;
创建两个文本框,一个按钮.第 1 个文本框绑定任意键事件,敲击键盘任意可显示字符,在交互窗口中显示该字符:第 2 个文本框绑定键事件,敲击键盘 a 字符,在交互窗口中显示 10 个'a'字符:按钮绑定 ...
- 《JAVA》编程创建一个Box类(长方体),在Box类中定义三个变量
问题:编程创建一个Box类(长方体),在Box类中定义三个变量,分别表示长方体的长(length).宽(width)和高(heigth),再定义一个方法void setBox(int l, int w ...
- Java并发编程实战笔记2:对象的组合
设计线程安全的类 在设计现车让安全类的过程之中,需要包含以下三步: 找出构成对象状态的所有变量 找出约束状态变量的不变性条件 建立对象状态的并发访问策略 实例封闭 通过封闭机制与合适的加锁策略结合起来 ...
- python输入多个字符串、输入最长的一串_无重复字符的最长子串(Python之暴力求解)...
无重复字符的最长子串(Python之暴力求解) 例题: 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例: (1) 输入: "abcabcbb" 输出: 3 ...
最新文章
- 学习API网关遇到的名词
- maven scope含义的说明
- (七)boost库之单例类
- content属性的4种用途
- Python爬虫_乱码、转码
- scala 高阶函数,闭包及柯里化
- 了解Mysql与MariaDb的关系
- 2021-05-17 吾日三省吾身
- 项目管理十大知识领域(二)--- 项目范围管理(过程、输入、工具和技术、输出)
- buuctf web wp
- 能上QQ,无法打开网页解决办法!!!(亲测能用)
- 会考计算机基本知识点总结,高中计算机会考基本知识点
- PHP之Smarty
- shiro的anon部分失效
- chrome 切换标签页快捷键_如何在Chrome浏览器中切换标签页
- 零基础Bootstrap入门教程(16)--模态框
- EPICS -- 测试asynDriver和设备支持的示例1-- 连接测试
- JS(五):JS的window对象之window相关方法、定时器
- java静态方法详解
- 分享一个高清大图的网站