2016-07-03 3 views
0

入力のすべての部分文字列のリストを取得しようとしています。入力のためのは、サブストリング{''、 'a'}の入力のための = ab、サブストリング{'、' a '、' b '、' ab '、' ba '}のための = 'ab'、 'abc'、 'ca'、 'ba'、 'cb'、 'ac'、 'abc'、 'acb'、 'bac' 、 'bca'、 'cab'、 'cba'} などです。PHPで可能な部分文字列を取得

私が試したコードはここに

function get_substr($string){ 
     $array=str_split($string); 
     static $k=0; 
     for ($i=0; $i <count($array) ; $i++) { 
      for ($j=0; $j <count($array) ; $j++) { 
       $new_array[$k]=substr($string, $i, $j - $i + 1); 
       $k++; 

      } 
     } 
     return($new_array); 

    } 

であると私は必要とするか、または変更するものを私に勧めてください

enter image description here

enter image description here

以下のように私は、このコードのO/Pを持っていますこの作業を行うための代替案。

+0

順列はあなたの要求出力が* *部分文字列ではありません –

+1

ソリューションです参照してください。 'ba'は 'abc'の部分文字列ではありません。 – Eiko

+0

あのエイコのために申し訳ありません。あなたが私の問題を考えているなら、どうぞ。 –

答えて

0
<?php 
// function to generate and print all N! permutations of $str. (N = strlen($str)). 
function permute($str,$i = null,$n = null) { 
    if(is_null($n)) $n = mb_strlen($str); 
    if(is_null($i)) $i = 0; 
    if ($i == $n) 
     print "$str \n"; 
    else { 
     for ($j = $i; $j < $n; $j++) { 
      swap($str,$i,$j); 
      permute($str, $i+1, $n); 
      swap($str,$i,$j); // backtrack. 
     } 
    } 
} 
// function to swap the char at pos $i and $j of $str. 
function swap(&$str,$i,$j) { 
    $temp = $str[$i]; 
    $str[$i] = $str[$j]; 
    $str[$j] = $temp; 
} 

$str = "hey"; 
permute($str); // call the function. 

はこのSO answer

+0

もしあなたがdownvoteなら、plsがなぜ言及しますか? – Iceman

+0

パラメータから '$ n'を削除することができます。それはCではありません:) – vfsoraki

+1

そしておそらく 'mb_strlen'を使ってコード化の問題を安全にしてください。 – vfsoraki

関連する問題