美文网首页
PHP字符串全排列算法

PHP字符串全排列算法

作者: 灵魂放逐 | 来源:发表于2017-06-12 20:38 被阅读0次

  今天面试一家公司,因为简历上写了ACM经历,被问到了PHP字符串全排列算法,当时时间有限只给了思路,回家后把它实现了出来:

<?php
/**
 * PHP字符串全排列算法
 */
$results = [];
$arr = [];

function bfs($start) {
    global $arr;
    global $results;

    $queue = [];
    array_push($queue, $start);

    while( !empty($queue) ) {
        $cur = array_shift($queue);
        if(strlen($cur) === count($arr)) {
            array_push($results, $cur);
        }

        $arr_temp = $arr;
        for ($i=0; $i<strlen($cur); $i++) {
            unset($arr_temp[$cur[$i]]);
        }

        foreach ($arr_temp as $key => $value) {
            $node = $cur . $key;
            array_push($queue, $node);
        }
    }
}

function allPermutation($string) {
    $array = [];
    for($i=0; $i<strlen($string); $i++) {
        array_push($array, $string[$i]);
    }
    sort($array);

    foreach ($array as $item) {
        global $arr;
        $arr[$item] = 1;
    }

    foreach ($array as $item) {
        bfs($item);
    }
}

allPermutation('abcde');
var_dump($results);
运行结果

BFS就是如此简单粗暴,哈哈!不懂的小伙伴可以留言:)

相关文章

  • PHP字符串全排列算法

    今天面试一家公司,因为简历上写了ACM经历,被问到了PHP字符串全排列算法,当时时间有限只给了思路,回家后把它实现...

  • 算法复习之字符串(1)

    (1)字符串循环左移 | 字符串全排列(递归,非递归)《本节内容》(2)KMP算法| BF算法(3 字符串的最...

  • 字符串全排列算法

    问题:输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,则输出由字符a,b,c所能排列出来的所...

  • iOS面试题汇总---算法类

    字符串 【3】最长回文子串 【3】最长无重复子串 【1*】字符串转数字 【4】KMP 算法 【2】字符串全排列 【...

  • P254-字符串的排列

    排列总结: 字符串的全排列和组合算法 1.递归实现 2.非递归实现 qsort函数、sort函数 (精心整理篇) ...

  • 算法-字符串之全排列

    字符串的全排列是字符串类的算法题的一个考察点,属于普通问题,它有两种实现方法,递归算法和非递归算法,非递归的方法要...

  • 46. Permutations

    算法 1: 递归数组 的全排列,等价于全排列与可能的取值组合得到。 算法 2: 计算一个排列 按字典升序排列的紧...

  • 全排列与字典序

    全排列 递归实现全排列; 首先来说递归算法实现全排列: 例如,对于{1,2,3,4}的例子进行全排列,其可以分解...

  • 全排列算法

    参考资料 先上代码,实现非常简洁 输出 主要思路 在此树中,每一个从树根到叶子节点的路径,就对应了集合A的一个排列...

  • 全排列算法

    4个数的全排列 结果 任务分配问题

网友评论

      本文标题:PHP字符串全排列算法

      本文链接:https://www.haomeiwen.com/subject/behrqxtx.html