给定一个set字符和一个正数k,找出所有该做set它可以由长度构成k该字符串集合 print-all-combinations-of-given-length

给定一个set字符和一个正数k,找出所有该做set它可以由长度构成k该字符串集合 print-all-combinations-of-given-length

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

// 给定一个set字符和一个正数k,找出所有该做set它可以由长度构成k该字符串集合

/*

Input: 

set[] = {‘a’, ‘b’}, k = 3

Output:

aaa

aab

aba

abb

baa

bab

bba

bbb

Input: 

set[] = {‘a’, ‘b’, ‘c’, ‘d’}, k = 1

Output:

a

b

c

d

package recursion;

import java.util.ArrayList;

public class N_sets_form_length_k_string {

	// 给出一个set的字符和一个正数k,求全部由这个set能组成长度为k的字符串集合
	/*
	 Input: 
	set[] = {'a', 'b'}, k = 3
	
	Output:
	aaa
	aab
	aba
	abb
	baa
	bab
	bba
	bbb
	
	
	Input: 
	set[] = {'a', 'b', 'c', 'd'}, k = 1
	Output:
	a
	b
	c
	d
	 
	 */
	public static void main(String[] args) {
		ArrayList<Character> set = new ArrayList<Character>();
		set.add('a');
		set.add('b');
		
		int k = 3;
		ArrayList<String> al = new ArrayList<String>();
		StringBuilder sb = new StringBuilder();
		rec(set, k, al, sb);
		
		System.out.println(al);
	}
	
	// 观察到选定第一个字符后,问题就转化为k-1的递归问题。而set中的每个元素都能充当第一个字符。

// 结束条件就是k为0时。 public static void rec(ArrayList<Character> set, int k, ArrayList<String> al, StringBuilder sb){ if(k == 0) { al.add(new String(sb)); return; } for(int i=0; i<set.size(); i++) { sb.append(set.get(i)); rec(set, k-1, al, sb); sb.deleteCharAt(sb.length()-1); // 善用StringBuilder来删除最后一个字符 } }}

http://www.geeksforgeeks.org/print-all-combinations-of-given-length/

版权声明:本文博客原创文章。博客,未经同意,不得转载。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/117415.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • oracle笛卡尔积「建议收藏」

    oracle笛卡尔积「建议收藏」笛卡尔积定义:多张表相乘,简单的说就是两个集合相乘的积。(列数相加,行数相乘)先建了两张表,课程表:信息表:1.内连接innerjoinon 内连接:笛卡尔积中,只显示有关联的数据,无关联不显示。select*fromlefttable左表,righttable右表where左表.主键=右表.外键;select*fromlefttable左表innerjoin右表…

    2022年7月11日
  • unity安装到一半失败

    unity安装到一半失败从unityhub安装unity总是到一半就提示失败,之前试过用取消同时安装visualstudio的选项,但后期重新安装很麻烦。从unity官方论坛找到了这些解决办法,一一排查过了,发现去掉Documentation可选项安装成功,visualstudio也正常安装了。…

    2022年6月27日
  • 批量给图片重命名_图片快速重命名编号

    批量给图片重命名_图片快速重命名编号如果你是一名摄影师,又或者你是一名图片设计的工作人员,工作中肯定会面对很多图片文件,图片多了就需要进行整理,不然就很难区分和管理,就很不利于我们的使用。为了更好的整理往往我们就需要给图片进行重命名并且排序,这就出现一个问题了,如何批量重命名这些图片并且进行编号呢?如果你还不知道如何解决这个问题,那么你就要跟随小编的步伐,我来为大家详细介绍图片批量重命名编号的方法吧!需要使用的软件:优速文件批量重命名软件下载地址:免费下载优速文件批量重命名软件https://www.yososoft.com/do

    2022年9月5日
  • webstorm中vue代码不提示[通俗易懂]

    webstorm中vue代码不提示[通俗易懂]今天webstorm中不提示vue代码,网上查找原因,均无果。都准备用idea打开vue项目,进行编写。突然注意到编辑器右下角经常出现的如下图,平时咱也不知道,也没管,反正今天代码不提示,就网上查查。都有谁知道这哥们是省电模式。如果勾选上的话,就不会有提示,果断取消勾选,提示终于出现。唉,什么问题都有。有提示真香。…

    2022年6月13日
  • activate-power-mode安装与设置(去掉activate-power-mode右上角图标)[通俗易懂]

    activate-power-mode安装与设置(去掉activate-power-mode右上角图标)[通俗易懂]一.安装点击进入点击安装重启后插件即可生效二.设置刚开始相信我们用的很不爽,每次到达到多少个单词后才会有效果触发,还有如下图这个烦人的图标,现在我们怎么把它去掉呢只需要照我的设置,Window–>activate-power-mode–>去掉combo/shake,其他三个全勾上,现在用起来就很爽了,赶紧体验吧

    2022年7月14日
  • C语言学生管理系统源代码「建议收藏」

      新人博主不易,希望看完点赞“`c/***autor:旋尘*time:2020.4.20*/#includeintMenu(){intcheck_number;do{system(“cls”);/运行前清屏,把选择清掉/printf(“\t学生成绩管理系统*\n”);printf(“\t*|1.添加学生信息\n”);printf(“\t|2.显示学生信息\

    2022年4月12日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号