21,886
社区成员
发帖
与我相关
我的任务
分享
function chrtonum($str){
$num=0;
$bins = array("零","一","二","三","四","五","六","七","八","九",'a'=>"个",'b'=>"十",'c'=>"百",'d'=>"千",'e'=>"万");//定义验证规则数组
$bits = array('a'=>1,'b'=>10,'c'=>100,'d'=>1000,'e'=>10000);//定义十位数以上的对应替换数组
//匹配验证规则,并替换
foreach($bins as $key=>$val){
if(strpos(" ".$str,$val)) $str=str_replace($val,$key,$str);
}
//分割字符串
foreach(str_split($str,2) as $val){
$temp=str_split($val,1);
if(count($temp)==1) $temp[1]="a";
if(isset($bits[$temp[0]])){
$num=$bits[$temp[0]]+(int)$temp[1];
}else{
$num+=(int)$temp[0]*$bits[$temp[1]];
}
}
return $num;
}
$n = 5;
$seq = [1,2,3,1,2,3,4,0,4,6,8,7,5];
echo "<pre>";
print_r(top($n,$seq));
echo "</pre>";
function top($n,$arr){
$mid = ceil($n / 2);
$count = count($arr);
$data = [];
$tmp = [];
foreach($arr as $k=>$v){
if($k < $mid-1){
continue;
}
if(($k + $mid) > $count){
break;
}
for($i=1;$i<=$n;$i++){
$tmp[] = $i < $mid ? $arr[$k-$i] : $arr[$k+$i-$mid];
}
if(max($tmp)==$v){
$data[$k] = $v;
}
$tmp = [];
}
return $data;
}
3、另一种解法
$arr = array_combine(range('A','Z'),range('a','z'));
echo strtr('AbSiuAds',array_merge($arr,array_flip($arr)));
print_r(top(5, [1,2,3,1,2,3,4,0,4,6,8,7,5]));
function top($N, $seq) {
$d = floor($N / 2);
$len = count($seq);
foreach($seq as $i=>$v) {
if($i - $d >= 0 && $i + $d < $len && $v >= $seq[$i - $d] && $v >= $seq[$i + $d])
$r[$i] = $v;
}
return $r;
}
$s = 'AbSiuads';
$r = join('', array_map(function($c) { return chr(ord($c)^32); }, str_split($s)));
echo $r;