获取订单中所有可能的子字符串

时间:2015-04-25 06:26:29

标签: javascript php regex

有很多解决方案可以找到可能的子串。我试过this php解决方案。

但我有具体要求。我需要使用顺序中的字符生成子字符串。例如:如果给定的字符串是:'ABCDE'

然后可能的组合是:'ABCD','ABC','ACDE','ACD','ADE','BCDE','BCD','BDE'和'CDE'

(子串的长度应该大于2,当然这很容易实现。)

不允许组合:'EDCBA','DBA','ECBA','AABB'等

任何人都可以建议我如何实现这一目标? PHP或JavaScript解决方案都是可以接受的。

1 个答案:

答案 0 :(得分:1)

尝试以下:

 function getSubString($str, $length = 3)
 {
    $len = strlen($str);
    $arr = [];
     for($i = 0; $i < $len; $i++)
    {

        $start = $i + 1;
        $end = $len - 1;
        while($start <= $end)
        {
            $l = $length - 1;
            while($l + $start <= $len )
            {
                $eS =  $str[$i].substr($str, $start, $l);
                if ($str != $eS)
                    $arr[] = $eS;
                $l += 1;
            }
            $start += 1;
        }
    }

    return $arr;

 }