今天上班发现一个ThoughtWorks的面试题,分享一下
可以接受任意多个特殊数(不包含0),在任意数字范围内输出(1~xxx)其实还可以用策略模式吧算法独立出来 针对这个题目就先不写了 (偷懒~~)
可以接受任意多个特殊数(不包含0),在任意数字范围内输出(1~xxx)
其实还可以用策略模式吧算法独立出来 针对这个题目就先不写了 (偷懒~~)
其实还可以用策略模式吧算法独立出来 针对这个题目就先不写了 (偷懒~~)
<?php
class FizzBuzzWhizz{
private $_special=array();
private $_words=array();
public function __construct(array $special,array $words){
if(in_array(0,$special)){
exit('特殊数中不能含有0');
}
$this->_special=$special;
$this->_words=$words;
}
public function run($num){
$output='';
for($i=1;$i<=$num;$i++){
$output.=$this->_calculate($i);
}
echo $output;
exit();
}
private function _calculate($number){
$str='';
if(strpos($number,$this->_special[0]) > 0){
return $this->_words[0]."<br>";
}
foreach($this->_special as $k=>$v){
if($number%$v === 0){
$str.=$this->_words[$k];
}
}
return $str==''?$number.'<br>': $str.'<br>';
}
}
$special=array(3,5,7);
$words=array('Fizz','Buzz','Whizz');
$obj=new FizzBuzzWhizz($special,$words);
$obj->run(100);
- 上一篇:生成短地址
- 下一篇:一些简单的php工具类
精彩图集
精彩文章






