輸入一句話,單詞用空格分離,將每個(gè)單詞反轉(zhuǎn),轉(zhuǎn)換以后原位置字母的大小寫保持跟原來(lái)一樣。
后面?zhèn)€要求似乎有歧義,我再解釋一下:原來(lái)第幾個(gè)大寫,轉(zhuǎn)完以后還是第幾個(gè)大寫,不是原來(lái)大寫的字母還是大寫,就像例子這樣,好好看例子呀。
例如:
Hello World 輸出 Olleh Dlrow
SWAT 輸出 TAWS
I am A sTudent 輸出 I ma A tNeduts
3 回答

躍然一笑
TA貢獻(xiàn)1826條經(jīng)驗(yàn) 獲得超6個(gè)贊
- 思路:先通過(guò)空格將字符串分隔成單獨(dú)的單詞,然后通過(guò)
strres
進(jìn)行字符串反轉(zhuǎn),通過(guò)判斷反轉(zhuǎn)前每個(gè)字符的大小寫對(duì)反轉(zhuǎn)后的單詞的每個(gè)字符進(jìn)行大小寫相應(yīng)的轉(zhuǎn)換,加一層判斷即可- 執(zhí)行結(jié)果
code:
<?php
function reverse($str) {
$words = explode(' ', $str);
$new_words = '';
foreach ($words as &$word) {
$rev_word = strrev($word);
$new_word = '';
for ($i =0; $i < strlen($word); $i++) {
$new_word .= preg_match('/^[A-Z]+$/', $word[$i])
? strtoupper($rev_word[$i]) : strtolower($rev_word[$i]);
}
$new_words .= $new_word. ' ';
}
return substr($new_words, 0, -1);
}
var_dump(reverse('Hello World'));
var_dump(reverse('SWAT'));
var_dump(reverse('I am A sTudent'));
?>

翻翻過(guò)去那場(chǎng)雪
TA貢獻(xiàn)2065條經(jīng)驗(yàn) 獲得超14個(gè)贊
句子分成單詞,單詞分成字母數(shù)組,然后反轉(zhuǎn).
這里為止都是一步一步做就好,最后對(duì)齊大小寫。
我的想法是用原順序?qū)Ρ萩type_lower,檢測(cè)出來(lái)之后修改新順序的大小寫狀態(tài)即可。
不知大神們是否有其他方案。
- 3 回答
- 0 關(guān)注
- 416 瀏覽
添加回答
舉報(bào)
0/150
提交
取消