对给定字符串求所有的组合

字符的全排列、字符的组合 一、字符的全排列 题目描述 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 输入描述: 输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。 /* 递归法:先固定第一个字符,求剩余字符的排列 递归出口:str中只剩下最后一个字符 如果字符串中有重复的字符... 阅读详情

输入字符串,输出所有的组合,比如输入abc,输出 a b c ab ac bc abc。

题目解法:abc用01串表示,001表示输出c,111表示输出abc,解法如下。。。空间复杂度n,时间复杂度为2^n-1,因为有这么多种结果啊。。。

package combination;

/**
 * 
 * @author Administrator
 * 输出所有的组合,比如输入abc,输出 a b c ab ac bc abc
 * 
 * boolean初始化默认为false,
 */
public class Combination {

	public static void combination(char[] cs) {
		int len = cs.length;
		boolean[] choosed = new boolean[len];
		char[] cache = new char[len];
		int result = len;
		int index = 0;
		while(true) {
			index = 0;
			while (choosed[index]) {
				choosed[index] = false;
				++result;
				if (++index == len) {
					return;
				}
			}
			choosed[index] = true;
			cache[--result] = cs[index];
			System.out.println(new String(cache).substring(result) + "  ");
		}
		
	}
	
	public static void main(String[] args) {
		String sourceString = "abc";
		char[] cs = sourceString.toCharArray();
		combination(cs);
		/*
	    a  
		b  
		ab  
		c  
		ac  
		bc  
		abc  
		 */
		/**
		 * 步骤:
		 * 初始:              a b c 
		 * choose: 0 0 0
		 *         1 0 0   a
		 *         0 1 0   b
		 *         1 1 0   ab
		 *         0 0 1   c
		 *         1 0 1   ac
		 *         0 1 1   bc
		 *         1 1 1   abc
		 *         
		 *         要保证在后一个字符进来不能覆盖前一个字符,但个数一样时可以,比如a b ,但有了b,a进入时要在b之前
		 *         
		 *         
		 */
	}
}

排列组合算法实例讲解 排列:从n个不同元素中,任取m(m 阅读详情

相关推荐

给定字符串长度,给出N个猜测,并告知其中字母猜中且位置猜中的个数及字母猜中但位置猜错的个数,求字符串

刷知乎的时候,突然看到这道华为笔试题,一时兴起,在网上搜了下也没找到类似的题目和答案,自己写了一个解决方案,但是感觉水平太浅,又不知道该怎么改善,记录一下,如果有大佬看到,还请不吝赐教。 题目:给定一个字符串(均为小写英文字母且不重复)的长度L,给出N个猜测,并告知其中字母猜中且位置猜中的个数,以及字母猜中但位置猜错的个数,求该字符串(保证唯一解) 样例输入: 5 5 cloxy 3 0 cxmnu 1 1 kcotd 2 1 apqud 2 0 bldwz 1 1 输出:clo..

benbendlianlian的博客 378

算法设计与分析第5章作业回溯法

给定一组包含n个元素的正整数,从这组整数中选择若干个,使它们的和恰好为指定的数k,要求找出选择元素个数最少的解。若存在多个子集的和均为k,且元素个数相同而且最少,则全部输出这些子集或者任意输出一个子集均可。若无解,则输出“No solution”。 【输入形式】 第一行有两个整数,一个是元素个数,另一个是k的值。 第二行是n个整数。 【输出形式】 第一行表示选择的元素,元素之间以空格隔开。 第二行表示所选择的元素个数。 【样例输入1】 5 9 1 2 3 4 5 【样例输出1】 4 5 2

Evan_qin_yi_quan的博客 1609

字符串所有组合的生成算法

本文介绍了一种使用位运算生成字符串所有组合的方法。对于长度为n的字符串,共有2^n-1种组合。通过将每个组合对应一个二进制数(1到2^n-1),利用位操作判断字符是否出现在当前组合中。代码示例展示了如何通过双重循环实现:外层循环遍历所有可能的组合编号,内层循环检查每一位是否为1,输出对应字符。该方法简洁高效,适用于任意长度的字符串组合生成。

学无止境 4923

给定字符串,输出由其中字符所有的组合,C

输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,则输出由字符a、b、c所能排列出来的所有字符串abc、acb、bac、bca、cab和cba。 递归思想: 假如针对abc的排列,可以分成 (1)以a开头,加上bc的排列 (2)以b开头,加上ac的排列 (3)以c开头,加上ab的排列 #include <stdio.h> #include <st...

big_kevin的博客 1270

能碳双控| AIRIOT智慧能碳管理解决方案

基于AIRIOT打造的智慧能碳管理平台解决方案结合大数据、物联网、人工智能(AI)、数字孪生等新一代信息技术,通过整合碳达峰、碳中和、实时碳价、碳配额和碳资产等多个模块,为组织提供了全方位、灵活且智能的碳资产管理解决方案,有助于实现碳管理目标、提升可持续性,并适应碳市场的不断变化。

AIRIOT的博客 1808

2025使用VM虚拟机安装配置Macos苹果系统下Flutter开发环境保姆级教程--下篇

我们可以看到,目前配置基本完成了,现在有两个错,一个是Chrome没安装,这个自己安装就可以了,如果不需要WEB测试也不影响开发,另一个是Simulator还没安装,这个主要是安装的时间太长了,也就是上面的这一步。这里要注意,这个下载安装会比较慢,有的载会特别卡造成安装失败,最好的办法是挂一个VPN,保证安装完成,不过这个可以在以后单独进行安装。至此,基本的安装完毕,好多人会以为Xcode就OK了,其实还没有,我们还缺少命令行工具包,这个在安装完Flutter以后进行设置。

weixin_48803304的博客 1412

字符串的全组合

字符串的全组合题目描述题目类别解题思路具体实现 题目描述 输入一个字符串,输出该字符串中字符的所有组合。举个例子,如果输入abc,它的组合有a、b、c、ab、ac、bc、abc。 题目类别 字符串 组合 解题思路 假设我们在长度为n的字符串上求m个字符的组合,从头到尾扫描字符串,针对第一个字符串,我们有两种选择,第一是把这个字符串放到组合中取,在剩下的n-1个字符中取m-1,第二是不把这个字符串放...

qq_36400206的博客 891

微腔光频梳仿真入门:MATLAB求解LLE方程全流程解析

光学频率梳在精密测量、光通信和微波光子学中有着广阔应用,而微环谐振腔中的Kerr非线性与四波混频效应能够紧凑地产生宽带梳齿。仿真这类系统的核心是求解Lugiato-Lefever方程(LLE),但直接从物理参数到数值代码往往让初学者无从下手。本文从微腔光频梳的物理图像出发,介绍LLE方程的推导与归一化方法,并重点讲解MATLAB数值实现的两种思路:基于ode45的频域耦合方程组求解与分裂步长RK4IP方法。同时讨论失谐扫描、孤子态识别、参数稳定性边界,以及如何将真实器件参数换算为无量纲仿真参数。无论你是刚接

weixin_32325225的博客 293

给定一字符串,求它的组合结果

给定一个字符串,求出该字符串的所有组合(假设无重复字符) str=“abc”,那么其组合有[a,b,c,ab,ac,bc,abc] 思路: 以abc为例,它的组合的结果为 2的3次方-1,即7种。那么枚举1——7,则每个值的二进制可代表一种情况: 1: 001 str[2] -----> c 2: 010 str[1] -----> b 3: 011 str[1]+str[2] -----> bc 4: 100 str[0] -----> a 5: 1

qq_40728028的博客 641

如何使用 SAP ABAP Development Tool 连接 SAP BTP 上的免费 ABAP 编程环境

在云端环境编写 ABAP 代码会遇到一些限制,比如你无法在云端 ABAP 编程环境进行发生在传统 SAPGUI 里的 Dynpro 和 Screen 编程。部分在 SAPGUI 里使用的 List 处理相关的关键字比如 WRITE,还有 CALL TRANSACTION 等代码,也无法在云端使用。 当然如果大家觉得上面提到的这些限制不会影响自己的 ABAP 学习,就可以继续本文的阅读,使用 ABAP Development Tool 登录云端的 ABAP 编程环境。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1519

RockChip Android14 修改LCD背光最大值

在调试LCD屏时时长会出现硬件不匹配,导致电流过大,屏幕发热严重。在不调整硬件的情况下,我们可以通过修改软件,降低LCD背光最大值来实现适配。我们都知道LCD屏背光是靠pwm来控制,一般来说最大值可以设置为255,针对上述问题,我们可以通过软件来降低该值,比如200,100等等。

qq_34968572的博客 631

一个字符串求所有组合php,给定一个字符串,返回所有的可能组合

例:abc返回a,b,c,ab,ac,bc,ca,cb,abc,acb,bac,bca,cab,cba回复内容:例:abc返回a,b,c,ab,ac,bc,ca,cb,abc,acb,bac,bca,cab,cba我覺得這個問題相當有趣,做為一個 Python 狂熱者,我不能同意 @garry_qian 的答案更多了,既然 Python 都提供了那麼好用的標準庫,不使用一下實在是太可惜了,在此立場...

weixin_39553705的博客 259

小秋SLAM入门实战ubuntu所有文章汇总

ubuntu 终端如何停止快速打印的输出以及恢复命令 ubuntu 终端如何快速打开当前路径下的图形化窗口界面? killall -9用途用法 ps -xu | grep这个命令的用途 linux 下 top命令显示的是内存是堆内存吗? zip分割和合并 关闭除当前 GNOME 终端窗口以外的所有其他 GNOME 终端窗口 如何在安装系统后设置短密码 【如何使用getrusage获取消耗的CPU时间和进程使用的最大物理内存】 【webots安装使用教程】 Linux系统下查看当前运行的进程和线程的几种方法

小秋 AI SLAM 入门实战教程 1405

GoDemo:给定数字字符串求可能的ip组合,数字顺序不变

package mainimport ( "fmt" "os" "strconv" )func getip(source string) (ips []string) { length := len(source) if length > 12 || length < 4 { return nil } if length == 4

曾庆国的博客 2559

【FISCO-BCOS】十一、一键部署

一键部署包括以下服务:节点(FISCO-BCOS 2.0+)、管理平台(WeBASE-Web)、节点管理子系统(WeBASE-Node-Manager)、节点前置子系统(WeBASE-Front)、签名服务(WeBASE-Sign)。部署成功后,登录此网站:http://localhost:5000 访问WeBASE管理平台。快速搭建WeBASE管理台环境,方便用户快速体验WeBASE管理平台。修改节点管理子系统和签名服务组系统的mysql数据库配置。如使用root账户:改为。配置方法:参考如下指令。

naihe_fish的博客 2597

【FF-A】第二章 Introduction

Armv8.4 架构引入了在安全状态下的虚拟化扩展。Arm® SMMU v3.2 架构[1]为安全流添加了对第2阶段翻译的支持,以补充在 Armv8.4 处理器状态下的安全 EL2 翻译制度。这些架构特性使得在安全状态下,彼此不信任的软件组件能够相互隔离。关于在安全状态下引入虚拟化扩展以及固件框架目标的更多理念可在名为《在安全世界使用虚拟化进行隔离》的白皮书[3]中找到。软件组件只能访问物理地址空间和系统资源的区域,例如 GIC 中对其正确运行必要的中断。

baron-周贺贺-代码改变世界ctw 528

算法面试题_求给定字符串的排列、组合、八皇后问题

首先来看看题目是如何要求的(百度迅雷校招笔试题)。 同剑指offer第二版: "面试题:38" 一、题目:字符串的排列 用C++写一个函数, 如 Foo(const char *str), 打印出 str 的全排列, 如 abc 的全排列: abc, acb, bca, dac, cab, cba 1.1 全排列的递归实现(不考虑有字符重复) 为方便起见,用123来示例下。123的全排列有123、132、213、231、312、321这六种。首先考虑213和321这二个数是如何得出的。显...

惊鸿一博 527

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

剑指offer:字符串的组合(java)

字符串的组合:     给一个字符串,比如ABC, 把所有的组合,即:A, B, C, AB, AC, BC, ABC, 都找出来。     解题思路:     假设我们想在长度为n的字符串中求m个字符的组合。我们先从头扫描字符串的第一个字符。针对第一个字符,我们有两种选择:一是把这个字符放到组合中去,接下来我们需要在剩下的n-1个字符中选取m-1个字符;二是不把这个字符放到组合

abc7845129630的博客 2850

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

【左神算法】给定一个数字组成的字符串,返回有多少种合法的 IPV4 组合

题目:给定一个数字组成的字符串 str,返回有多少种合法的 IPV4组合。 举例: str = “245111”,只有一种合法 IPV4组合:245.1.1.1,所以返回 1 str = “11111”,所有合法的 IPV4组合为: 1.1.1.11 1.1.11.1 1.11.1.1 11.1.1.1 所以返回 4 str = “100111”,所有合法的 IPV4组合为: 100...

Java学习 2009

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

C++给字符串排序——字典序问题

问题描述 今天做的一道实验题,刚刚写完实验报告,就把自己实验报告中的内容在这里再大概说一下(可能会有较多报告中的截图,懒~) 问题分析 我们要求字符必须是升序排列的,所以如果给定字符串长度为3,且开头字母是a,所以我们应该决定出后两个元素,且后两个元素应该比a大,所以后两个元素的组合数应该是C(25,2) 因为比a大的字母有25个,所以应该从25个中选出2个作为后两个字母填入指定位置。 所以我们...

weixin_44755413的博客 5929

给定一个仅包含数字 2-9 的字符串,返回所有它在手机键盘上能表示的字母组合

给定一个仅包含数字 2-9 的字符串,返回所有它在手机键盘上能表示的字母组合 用于自己学习记录,思路如下: 1、定义一个List1用于存放已经排列组合好的数据。 2、再用这个定义好的List1与另外一个List2做组合,组合后的结果再给List1。 // An highlighted block package com.hlt.autotest.test; import java.util.*; public class Algorithm { public static Map<Stri

weixin_42274444的博客 1196

字符串的组合

转自:http://blog.youkuaiyun.com/ns_code/article/details/26405471 剑指offer上的拓展题目,输入一个字符串,输出该字符串的字符的所有组合,比如输入字符串:abc,输出a、b、c、ab、ac、bc、abc。 可以考虑求长度为n的字符串中m个字符的组合,设为C(n,m)。原问题的解即为C(n, 1), C(n, 2),...C(n, n...

u010815305的专栏 145

Leetcode:给定一个数字字符串,返回该数字可能表示的所有字母组合(电话按钮上的数字和对应的字母)。

Given a digit string, return all possible letter combinations that the number could represent. A mapping of digit to letters (just like on the telephone buttons) is given below. Input:Digit strin...

LeetCode:Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right which minimizes the sum 1131

Python 中字符串所有长度为 k 的组合

例如,给定字符串 “ABCD” 和 k = 4,可能的组合包括 “ABCD”、“ABDC”、“ACBD”、“ACDB”、“ADBC”、“ADCB”、“BACD”、“BADC”、“BCAD”、“BCDA”、“BDAC”、“BDCA”、“CABD”、“CADB”、“CBAD”、“CBDA”、“CDAB”、“CDBA”、“DABC”、“DACB”、“DBAC”、“DBCA”、“DCAB”、“DCBA”。该函数可以生成一个组合,即给定一个列表和一个整数 k,生成所有可能的选择 k 个元素的组合。

D0126_的博客 387

算法---给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合

题目 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例 1: 输入:digits = "23" 输出:["ad","ae","af","bd","be","bf","cd","ce","cf"] 示例 2: 输入:digits = "" 输出:[] 示例 3: 输入:digits = "2" 输出:["a","b","c"] 提示: 0 <= digits.l

男儿不展风云志,空有天生八尺躯 4780

每日一题(五):n个正整数排列,求组合后最大数

每日一题,让今天的自己变成更好的自己。

gybhh的博客 1222
上一篇: Coins-DP
下一篇: 获取请求IP
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值