1. 程式人生 > >PHP輸入一個字串,打印出該字串中字元的所有排列

PHP輸入一個字串,打印出該字串中字元的所有排列

輸入一個字串,打印出該字串中字元的所有排列。

例如輸入字串abc,則輸出由字元a、b、c所能排列出來的所有字串

abc、acb、bac、bca、cab和cba。

/**

* 輸入一個字串,打印出該字串中字元的所有排列

* @param unknown $arr    字串轉化的陣列

* @param unknown $start  開始位置

* @param unknown $len  字串長度

*/

function test3(&$arr,$start,$len){

if ($start== $len){

echo join('', $arr),PHP_EOL

;

}else {

for ($i=$start;$i<=$len;$i++){

test4($arr[$start],$arr[$i]);

test3($arr, $start+1,$len);

test4($arr[$start],$arr[$i]);

}

}

}

/**

* 字元交換位置

* @param unknown $a

* @param unknown $b

*/

function test4(&$a,&$b){

$tmp = $a;

$a = $b;

$b = $tmp;

}

$str = 'abc';

$arr = str_split

($str);

$len = count($arr)-1;

test3($arr,0, $len);

相關推薦

PHP輸入一個字串字串字元所有排列

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

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

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

基於回溯法思想:輸入一個字串,按字典序字串字元所有排列。例如輸入字串abc,則字元a,b,c所能排列出來的所有字串abc,acb,bac,bca,cab和cba。

    連結:https://www.nowcoder.com/questionTerminal/fe6b651b66ae47d7acce78ffdd9a96c7 來源:牛客網 import java.util.List; import java.util.Col

輸入一個字串,按字典序字串字元所有排列(劍指offer)

題目 輸入一個字串,按字典序打印出該字串中字元的所有排列。例如輸入字串abc,則打印出由字元a,b,c所能排列出來的所有字串abc,acb,bac,bca,cab和cba。 簡單解釋下什麼是字典序,簡單理解就是像英文字典那樣排序, 設想一本英語字典裡的單詞,何者在前何者在後? 顯然的

刷題:輸入一顆二叉樹和一個整數二叉樹結點值的和為輸入整數的所有路徑。

原題:輸入一顆二叉樹和一個整數,打印出二叉樹中結點值的和為輸入整數的所有路徑。路徑定義為從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。 思路分析:首先思考節點值的和為輸入的整數,每條路徑都一定是從根節點到葉子節點,在資料結構中從根節點到葉子節點的遍歷稱之為深度優先遍歷DFS。因此整

java 輸入一個字串,字串字元所有排列

public class JavaDemo { public static void main(String[] args) { String str = ""; Scanner s

《牛客網劍指offer27題》輸入一個字串,按字典序字串字元所有排列

題目 : 輸入一個字串,按字典序打印出該字串中字元的所有排列。例如輸入字串abc,則打印出由字元a,b,c所能排列出來的所有字串abc,acb,bac,bca,cab和cba。 結果 : 牛客網編譯通過 程式碼及思路:     //中心思想:列出第一位所有可能情況,然後後

給定一個長度不限的字串請找字串出現次數最多的那個字元字元及出現次數(C/C++版)

#include<iostream> using namespace std; /** * @brief findchar 給定一個長度不限的字串,請找出該字串中出現次數最多的那個字元,並打印出該字元及出現次數; 如果多個字元的出現次數相同,只打印首個

#題目描述:輸入一個字串,按字典序字串字元所有排列。例如輸入字串abc, #則字元a,b,c所能排列出來的所有字串abc,acb,bac,bca,cab和cba

才學不久,希望每天能記錄一篇 import random def zidianxulie():#封裝整個函式 a=input(“請輸入字串:”) a1=sorted(a)#先對我輸入的字串進行一個排序,簡單得到一個列表 l=[]#空列表的

輸入一顆二叉樹和一個整數二叉樹結點值的和為輸入整數的所有路徑(劍指offer)

      解題思路:遍歷二叉樹,採用遞迴的方法,將滿足條件的路徑壓入一維陣列當中,注意當找到滿足條件的路徑時,先將陣列壓入二維陣列,然後將一維陣列中的每個元數彈出,以存放新的路徑。 /* struct TreeNode {int val;struct TreeNode

輸入一顆二叉樹和一個整數二叉樹結點值的和為輸入整數的所有路徑

ger roo pop void set null push ava 所有 題目: 輸入一顆二叉樹和一個整數,打印出二叉樹中結點值的和為輸入整數的所有路徑。從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。 解答: 1 import java.util.*;

某公司的僱員分為以下若干類。寫一個程式把若干各種型別的員工放在一個Employee 數組裡一個函式某月每個員工的工資數額

某公司的僱員分為以下若干類:Employee:這是所有員工總的父類,屬性:員工的生日月份。方法:getSalary(int month) 根據引數月份來確定工資,如果該月員工過生日,則公司會額外獎勵100 元。SalariedEmployee:Employee 的子類,拿固定工資的員工。屬性:月薪Hourly

c#輸入三個數中間的數值

Console.WriteLine("請輸入三個數:"); int a = int.Parse(Console.WriteLine()); int b = int.Parse(Console.WriteLine()); int c = int.Parse(Console.W

遍歷一個資料夾,資料夾下所有的py檔案

import osdef iterbrowse(path): for home, dirs, files in os.walk(path): for filename in files: yield os.path.join(home, filename)for fu

java山科實驗4-4 設計一個類的方法輸入是兩個字串的集合這兩個集合的笛卡爾乘積。

設計一個類的方法,其輸入是兩個字串的集合(每個集合中的字串有相同的意義,例如,一個全是姓名的字串,一個全是班級的字串),打印出這兩個集合的笛卡爾乘積。 package zuoye4; public

【劍指Offer】輸入一個正數s所有和為s 的連續正數序列(序列大小至少為2) (C++)

題目用例: s = 15,那麼由於1+2+3+4+5 = 4+5+6=7+8 = 15,所以存在3個這樣的序列。 分析: 由於序列大小至少為2,我們定義兩個變數l和r,分別表示序列的最小值和最大值。 對於r而言,r取何值其實是有一個範圍的,即當序列只有2

“黑馬程式設計師”從鍵盤接受一個數字列出數字的中文表示格式 例如: 鍵盤輸入123一二三 鍵盤輸入3103三一零三

package com.itheima; import java.util.*; /**  * 第二題:從鍵盤接受一個數字,列出該數字的中文表示格式          例如:          鍵盤輸入123,打印出一二三          鍵盤輸入3103,打印出三一零三

輸入一個奇數n一個n*n的矩陣每個數字是從1到n*n的整數要使每一行每一列的數字之和都相等

#include<stdio.h> int a[1000][1000]; int main() {     int n,i,j;     scanf("%d",&n);     a[0][n/2]=1;     for(i=0;i>n;i++){

輸入一個整數和一棵二元樹從樹的根結點開始往下訪問一直到葉結點所經過的所有結點形成一條路徑和與輸入整數相等的所有路徑

題目:輸入一個整數和一棵二元樹。從樹的根結點開始往下訪問一直到葉結點所經過的所有結點形成一條路徑。打印出和與輸入整數相等的所有路徑。例如 輸入整數22和如下二元樹         10          /    \         5       12       /