php面试题之—用123456这六个数随机排序,要求5不能在第3位,5和6不能相连

php面试题之—"用123456这六个数随机排序,要求5不能在第3位,5和6不能相连",借用了php自身随机函数实现(解题思路为不正确在重新排序,方法有些傻):

版本一:

$arr = array(1,2,3,4,5,6);
print_r(my_sort($arr));
function my_sort(&$arr = array()) {
	shuffle($arr);
	if ($arr[2] == 5) {
		$arr = my_sort($arr);
	}
	//增加‘e’字符防止56或65在首个位置出现
	$tem_str = 'e'.implode('', $arr);
	if (strpos($tem_str, '56') || strpos($tem_str, '65')) {
		$arr = my_sort($arr);
	}
	return $arr;
}

版本二:

/**
 *用123456随机排序,要求5不能在第3位,5和6不能相连
 *----------------------------------------
 * @param  string $str='123456';
 *----------------------------------------
 * @author 子衿阁
 * @return void
 */
function my_sort2($str) {
	while (true) {
		$i = str_shuffle($str);
		$a = stripos($i, '5');
		$b = stripos($i, '56');
		$c = stripos($i, '65');
		if ($a != 2 && $b === false && $c === false) {
			break;
		}
	}
	return $i;
}
$str = '123456';
echo my_sort2($str);

版本三:

/**
 *用123456随机排序,要求5不能在第3位,5和6不能相连
 *----------------------------------------
 * @param  string $str='123456';
 *----------------------------------------
 * @author 丢失的浮尘
 * @return void
 */
function rand_str($str){
        $a = str_shuffle($str);
        $b = strpos($a,"5");
        if($b==2 or $a[$b+1]==6 or $a[$b-1]==6){        
            return rand_str($str);        
        }else{
            return $a;        
        }      
    }


版权及转载说明

本站原创、转载文章欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区

本站转载文章版权归原作者所有,如发现本站文章涉嫌侵权请点击「联系我们」反馈,本站将立即给予删除

转载请注明:文章转载自:全分享社区 「http://www.aweb.cc

本文标题:php面试题之—用123456这六个数随机排序,要求5不能在第3位,5和6不能相连

本文地址:http://www.aweb.cc/Article/detail/id/75.html

php猴子选大王算法 <<上一篇 下一篇>>OneThink1.1开发版发布

1582879301937287.jpg