利用递归求字符串的子序列(从左到右)
1.PHP实现
<?php //获取字符串str 的子序列 //如 $str = 'abcdefg'; 其所有子序列为$str1='a',$str2='b', //$str3='c' ... //str固定不变, //index此时来到的位置,要 or 不要 //如果index来到str中的终止位置,把沿途路径放入结果集中 //之前做出的选择就是path // a // 1 / \ 0 // b b // 1 / \ / \ 0 // c c c c // 1 / \/ \/\ /\ 0 // d dd dd dd d // ... // 字序列个数 2^(n-1),n为字符串的长度 function getSubSequeuece($arrChar=[],$index=0,$path,&$result) { $num = count($arrChar); if($num==0) return; if($num == ($index+1)){ $result[] = $path; return; } //通过某个节点 $string = $path.$arrChar[$index]; $index++; getSubSequeuece($arrChar,$index,$string,$result); //不通过某个节点 $string2 = $path; getSubSequeuece($arrChar,$index,$string2,$result); } $arrChar=['H','e','l','l','o',',','W','o','r','l','d','!']; $result=[]; getSubSequeuece($arrChar,0,'',$result); print_r($result);