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);PHP字符串全排列算法的更多相关文章
- 全排列算法的JS实现
		问题描述:给定一个字符串,输出该字符串所有排列的可能.如输入“abc”,输出“abc,acb,bca,bac,cab,cba”. 虽然原理很简单,然而我还是折腾了好一会才实现这个算法……这里主要记录的 ... 
- 不会全排列算法(Javascript实现),我教你呀!
		今天我很郁闷,在实验室凑合睡了一晚,准备白天大干一场,结果一整天就只做出了一道算法题.看来还是经验不足呀,同志仍需努力呀. 算法题目要求是这样的: Return the number of total ... 
- Java字符串排列算法
		Java字符串排列算法 题目:现有ABCDE 5个球 构成的排列组合 可重复抽取 最多取到16个 共有多少种组合方式? 比如:取1个球可以构成的组合有 A B C D E 共5种,取2个球可以构成的组 ... 
- Rabin-Karp字符串查找算法
		1.简介 暴力字符串匹配(brute force string matching)是子串匹配算法中最基本的一种,它确实有自己的优点,比如它并不需要对文本(text)或模式串(pattern)进行预处理 ... 
- 记录几个经典的字符串hash算法
		记录几个经典的字符串hash算法,方便以后查看: 推荐一篇文章: http://www.partow.net/programming/hashfunctions/# (1)暴雪字符串hash #inc ... 
- 关于一道面试题,使用C#实现字符串反转算法
		关于一道面试题,使用C#实现字符串反转算法. 题目见http://student.csdn.net/space.php?do=question&ac=detail&qid=490 详细 ... 
- 字符串全排列 java实现
		经常会遇到字符串全排列的问题.例如:输入为{‘a’,’b’,’c’},则其全排列组合为abc,acb,bac,bca,cba,cab.对于输入长度为n的字符串数组,全排列组合为n!种. package ... 
- Levenshtein字符串距离算法介绍
		Levenshtein字符串距离算法介绍 文/开发部 Dimmacro KMP完全匹配算法和 Levenshtein相似度匹配算法是模糊查找匹配字符串中最经典的算法,配合近期技术栏目关于算法的探讨,上 ... 
- 【Data Structure & Algorithm】字符串全排列
		字符串全排列 题目:输入一个字符串,打印出该字符串的所有排列.例如输入字符串abc,则输出由字符a.b.c所能排列出来的所有字符串abc.acb.bac.bca.cab.cba. 分析:考察对递归的理 ... 
随机推荐
- MyBatis(七):使用注解替代xml文件
			本文是按照狂神说的教学视频学习的笔记,强力推荐,教学深入浅出一遍就懂!b站搜索狂神说或点击下面链接 https://space.bilibili.com/95256449?spm_id_from=33 ... 
- flask-script的基本使用
			Flask-Script flask-script的作用是可以通过命令行的形式来操作Flask.例如通过命令跑一个开发的服务器.设置数据库等. 命令的添加方式 1 .使用manage.command: ... 
- 当const放在function声明后
			#include <iostream> class MyClass { private: int counter; public: void Foo() { std::cout <& ... 
- VSCode——自定义VSCode背景图片
			本文转载自https://blog.csdn.net/yukinoai/article/details/84564949 1.以管理员身份运行VS Code,安装background插件 2.打开se ... 
- 3.K均值算法
			一.概念 K-means中心思想:事先确定常数K,常数K意味着最终的聚类类别数,首先随机选定初始点为质心,并通过计算每一个样本与质心之间的相似度(这里为欧式距离),将样本点归到最相似的类中,接着,重新 ... 
- 多角度让你彻底明白yield语法糖的用法和原理及在C#函数式编程中的作用
			如果大家读过dapper源码,你会发现这内部有很多方法都用到了yield关键词,那yield到底是用来干嘛的,能不能拿掉,拿掉与不拿掉有多大的差别,首先上一段dapper中精简后的Query方法,先让 ... 
- Spring(DI,AOP) 理解(一)
			感觉自己的spring理解的不好.所以重新开始学习. 这篇文章主要是来理解DI(依赖注入),Aop(切面) 一.DI(依赖注入,这里没有涉及到注释.只是用xml文件和Bean的方法来注册pojo,) ... 
- qad progress数据库启动出错解决
			1. 启动时报:SYSTEM ERROR: Wrong dbkey in block. Found 0, should be 6342528 in area 36. (439) ** Save fi ... 
- SpringBoot连接Redis服务出现DENIED Redis is running in protected mode because protected mode is enabled
			修改redis.conf,yes 改为 no 
- DNA sequence HDU - 1560(IDA*,迭代加深搜索)
			题目大意:有n个DNA序列,构造一个新的序列,使得这n个DNA序列都是它的子序列,然后输出最小长度. 题解:第一次接触IDA*算法,感觉~~好暴力!!思路:维护一个数组pos[i],表示第i个串该匹配 ... 
