我正在尝试获取所有输入子字符串的列表。 输入= a,子串{''' a'} 输入= ab,子串{''' a'''' ab'' ba' ;} 输入= abc,子串{''' a'''' c'' ab&#39 ;,' BC'' CA'' BA'' CB'' AC'&#39 ; ABC'' ACB'' BAC'' BCA''驾驶室'' CBA' } 等等。
我试过的代码就在这里
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);
}
我有以下代码的o / p
请建议我需要做哪些更改或做其他任何其他想法。
答案 0 :(得分:1)
function find_posible_substr($input){
$input_len = strlen($input);
$possubstr = array();
$i = 0;
while($i < $input_len){
$j = 0;
while($j < $input_len){
$possubstr[] = substr($input, $j, $i + 1);
if(substr($input, $j, $i + 1) == $input){
break;
}
$j++;
}
$i++;
}
return $possubstr;
}
我不知道您是否还在这个问题上。但是我还是想分享我的。
如果输入为abc
,则输出将如下所示。
Array
(
[0] => a
[1] => b
[2] => c
[3] => ab
[4] => bc
[5] => c
[6] => abc
)
答案 1 :(得分: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
答案 2 :(得分:0)
$ str =“ abcd”; $ str_arr = str_split($ str);
for($ i = 0; $ i <= count($ str_arr)-1; $ i ++){
for($j = $i+1 ; $j <= count($str_arr) ; $j++){
for($k = $i; $k <= $j-1; $k++){
$subsrt1.= $str_arr[$k];
}
$substr[] = $subsrt1;
$subsrt1 = '';
}
} print_r($ substr);