1. 程式人生 > >題目描述:給定一個字串,求出其所有可能的字元組合. 比如:abc 其所有組合是:a,b,c,ab,ac,bc,abc

題目描述:給定一個字串,求出其所有可能的字元組合. 比如:abc 其所有組合是:a,b,c,ab,ac,bc,abc

/*
題目描述:給定一個字串,求出其所有可能的字元組合.
比如:abc 其所有組合是:a,b,c,ab,ac,bc,abc

是遞迴的思想:首先你拿到的是abc,你可以依次打印出去掉c,b,a的組合:ab,ac,bc
然後遞迴用這些子串去調動這個函式,比如ab:依次去掉b,a打印出a,b;
ac依次打印出a,c;bc依次打印出b,c;但是存在一個問題列印重複了,這個
可以傳進去一個引數pos來解決
*/


#include<iostream>

using namespace std;
void fun(string str,int pos)
{
	if(str.length() == 0)
	return;
		for(int i = pos - 1; i >=0; --i)
		{
			string tmp;
			for(int j = 0;j<str.length();++j)
			{
				if(j != i)
				{
					tmp += str[j];
				}
			}
			fun(tmp,i);
		}
		cout<<str<<" ";
}
int main()
{
	string str("abcd");
	fun(str,4);
	cout<<endl;
	return  0;
}

執行結果:

g++  2.cpp

t$ ./a.out
a b ab c ac bc abc d ad bd abd cd acd bcd abcd


相關推薦

題目描述給定一個字串所有可能字元組合 比如abc 所有組合是:a,b,c,ab,ac,bc,abc

/* 題目描述:給定一個字串,求出其所有可能的字元組合. 比如:abc 其所有組合是:a,b,c,ab,ac,bc,abc 是遞迴的思想:首先你拿到的是abc,你可以依次打印出去掉c,b,a的組合:ab,ac,bc 然後遞迴用這些子串去調動這個函式,比如ab:依次去掉b,

LeetCode 第3題給定一個字串不含有重複字元的最長子串的長度。

public class LeetCode3 { public static void main(String[] args) { /** * LeetCode第3題: * 給定一個字串,找出不含有重複字元的最

給定一個字串不含有重複字元的最長子串的長度。 示例 給定 "abcabcbb" 沒有重複字元的最長子串是 "abc" 那麼長度就是3。 給定 "bbbbb" 最長的子串就是 "b

Str = raw_input('plese input Str:') def qiu_chongfu(Str2):#定義判斷字串是否含有重複字元,如有返回0,沒有返回1 biao = 0 for i in range(0,len(Str2)): for j in

給定一個字串最長的重複子串的長度

題目來源:這是程式設計珠璣上的一道題目 概念 字串的字首和字尾 例如字串 s =“abcdeabc” 則s的字首: “a”,“ab”,“abc”,“abcd”,“abcde”,“abcdea”,“abcdeab”,“abcdeabc”其中除了s

給定一個字串最長的重複子串

題目:給定一個字串,求出其最長的重複子串 如字串abcdabcabcd,求的最長重複子串為abcd 程式碼: void LongChar(char* str) {  if(str==NULL)   return;  int max=0; &

【每日面試題】給定一個字串最長的重複子串

題目:給定一個字串,求出其最長的重複子串 如字串abcdabcabcd,求的最長重複子串為abcd 程式碼: void LongChar(char* str) {  if(str==NULL)   return;  int max=0;  int first=0;  int

給定一個字串不含有重複字元的最長子串的長度。

題目描述:   給定一個字串,找出不含有重複字元的最長子串的長度。 思路1:   依排列組合的所有可能拿到所有子串,依次傳入重複子穿的判斷方法中進行判斷,每次更新出不重複子串的最大長度! 具體程式碼:   1 import java.util.Scanner; 2 3 pu

給定一個字串不含有重複字元的最長子串的長度(javascript)

var lengthOfLongestSubstring = function(s){ var str = '';//存放當前最大無重複項字串 var len = 0;//存放當前當前最大無重複項字串長度 for(var i=0;i<s.length;

前端演算法給定一個字串找到它中的第一個非重複字元並返回它的索引

給定一個字串,找到它中的第一個非重複字元並返回它的索引。如果它不存在,則返回-1。 例子: s =‘leetcode’ 返回0。 s =‘loveleetcode’ 返回2。 注意:您可以假設該字串僅包含小寫字母。 <script> var

LeetCode 3. Longest Substring Without Repeating Characters 給定一個字串找到它的沒有重複字元的最大子串

Given a string, find the length of the longest substring without repeating characters. Examples: Given "abcabcbb", the answer is "abc",

給定一個字串找到最先出現的相同字元

連結:https://www.nowcoder.com/questionTerminal/2a38887ce9ec4262856b40e5ae87e557 來源:牛客網 char first_double_char(const char *str) {     int le

給定一個字串所有不重複的排列組合

給一個字串,比如ABC, 把所有的排列,即:ABC, ACB, BAC, BCA, CAB, CBC 都找出來。  解題思路:  對於一個n 位的字串來講,它是n-1位字串的排列 加上 沒有在 n -1 位字串裡 那個字元 的排列。   比如:  對於字串ABC來講,它所有

面試程式設計題1:給定一個字串統計每個字母出現次數

       不管是自動化測試,還是測試開發,或者高階測試工程師,國內很多公司都開始要求編碼能力。在各種面試中,經常會問到一些程式設計如何實現的問題。本系列,專門記錄一些面試中遇到的問題,主要是用Ja

給定一個字串去重(重複的字元只保留第一次出現的)

原始碼(c++): #include <iostream> #include <string> using namespace std; int main(){ string str; cin>>str; int

c#程式設計給定一個正整數是幾位數並逆序輸出

<span style="color:#FF0000;">第一步:把輸入的數字轉為字串n.ToString() 第二步:求出字串的長度即為正整數的位數 第三步:從後向前逆序輸出</span> 附程式碼: using System; using Sys

給定一個字串刪除字串中所有的bac組合 要求字串只遍歷一次且不能使用額外的空間

string = 'aaascsscc' ls = list(string) def isA(ls): i = 0 while i < len(ls): if ls[i] == 'b': ls.pop(i) if i &g

變換給定一個字串作為輸入將其中的數字用數字前近鄰的字母序列進行替換字母序列重複的次數等於該數字。最後將字串輸出。 例如 輸入’a2bc3d1’ 輸出’aabcbcbcd’

 JS中,字串的基本操作有: 1.search 查詢 2.substring 獲取子字串 3.charAt 獲取某個字元 4.split分割字串,獲得陣列 JS中,陣列的基礎操作有: 1.push()方法可以在陣列的末屬新增一個或多個元素 2.pop()方法把陣

題目輸入一個字串打印字串字元所有排列。例如輸入字串abc則輸出由字元abc所能排列出來的所有字串abc、acb、bac、bca、cab和cba。

題目:輸入一個字串,打印出該字串中字元的所有排列。例如輸入字串abc,則輸出由字元a、b、c所能排列出來的所有字串abc、acb、bac、bca、cab和cba。 /** * */ pack

題目一個函式兩個整數之和要求在函式體內不得適用+-* ./ 四則運算子號

題目:寫一個函式,求兩個整數之和,要求在函式體內不得適用+,-,* ,./  四則運算子號     面試的時候被問道這個問題,首先我們分析人們是如何進行十進位制的加法的,比如如何得出5+17=22這個結果的,實際上,我們可以分三步進行:第一步只做各位相加不進

題目輸入一個字串輸出該字串字元所有組合。舉個例子如果輸入abc它的組合abcabacbcabc

 題目:輸入一個字串,輸出該字串中字元的所有組合。舉個例子,如果輸入abc,它的組合有a、b、c、ab、ac、bc、abc。 /* * AllQ.java 2011-10-23 * Copyri