如无特别说明,以下题目均可用各种技术方案来解答。

Posted by & filed under 每日一题.

【四脚猫】每日一题(3月20日):要求给出1到9999之间随机数共 365个,第一个数是1,最后一个数是9999,随机数之间尽可能均匀分别。

例如: 1,10, 20 ,30…..3640,9999 这样的结果不够均匀,但是不够均匀。

 

 

 

 

 

 

 

Posted by & filed under 每日一题.

要求:

给出一个字符串如 “A journey of a thousand miles must begin with a single step.” ,通过 PHP 程序处理变成 “a journeY oF A thousanD mileS musT begiN witH A singlE steP.”

注意:
1、每个单词最后的字符如果是大写就变成小写,如果是小写就变成大写。
2、如果单词只有一个字母,则转换这个字母,如“A” 变成 “a”,“a”变成“A”。
3、标点符号不用变化。

1
2
3
4
5
6
/*小河PHP版本*/
$str = "A journey of a thousand miles must begin with a single step.";
echo preg_replace_callback('/[a-zA-Z]\b/', 'toggle', $str);
function toggle($w) {                                                                                                        
    return ord($w[0]) < 97 ? chr(ord($w[0])+32) : chr(ord($w[0])-32);
}
1
2
/*阳光JS版本*/
'A journey of a thousand miles must begin with a single step.'.replace(/[a-z]\b/ig, function($0){return $0[$0.charCodeAt(0)>96 ? 'toUpperCase' : 'toLowerCase']()})
1
2
3
4
5
6
7
8
9
10
/*微笑PHP版本*/
$str = "A journey of a thousand miles must begin with a single step.";
$str = str_replace(".", "", $str);
$str_arr = explode(" ", strrev($str));
$strs = '';
foreach ($str_arr as $k=>$v){
    ord($v)>64 && ord($v)<91 ? $v = lcfirst($v):$v = ucfirst($v);
    $strs .= $v." ";
}
echo strrev($strs).".";
1
2
3
4
/*小薇PHP版本*/
$str = "A journey of a thousand miles must begin with a single step.";

echo lcfirst(strrev((ucwords(strrev(rtrim($str,'.')))))).'.';
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/*blacktree加强版*/
$str="A journey of a thousand miles must begin with a single step.";
$words=explode(" ", $str);
foreach($words as &$word){
    $len=strlen($word);
    $pos=$len-1;
    $letter=$word[$pos];
    $newletter=convertLetter($letter);
    if($letter==$newletter){
        $pos=$len-2;
    }
    $word[$pos]=convertLetter($word[$pos]);
    //echo "$word ".chr(13);
}

$newstr=implode(" ",$words);
echo $newstr;
1
2
3
4
5
6
7
8
9
10
//实现大小写字符转换
function convertLetter($letter){
    $code=ord($letter);
    if($code>=65 && $code<=90){
        $code+=32;
    }elseif($code>=97 && $code<=122){
        $code-=32;
    }
    return chr($code);
}