输入一句话,单词用空格分离,将每个单词反转,转换以后原位置字母的大小写保持跟原来一样。
后面个要求似乎有歧义,我再解释一下:原来第几个大写,转完以后还是第几个大写,不是原来大写的字母还是大写,就像例子这样,好好看例子呀。
例如:
Hello World 输出 Olleh Dlrow
SWAT 输出 TAWS
I am A sTudent 输出 I ma A tNeduts
3 回答
跃然一笑
TA贡献1826条经验 获得超6个赞
- 思路:先通过空格将字符串分隔成单独的单词,然后通过
strres
进行字符串反转,通过判断反转前每个字符的大小写对反转后的单词的每个字符进行大小写相应的转换,加一层判断即可- 执行结果
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'));
?>
翻翻过去那场雪
TA贡献2065条经验 获得超14个赞
句子分成单词,单词分成字母数组,然后反转.
这里为止都是一步一步做就好,最后对齐大小写。
我的想法是用原顺序对比ctype_lower,检测出来之后修改新顺序的大小写状态即可。
不知大神们是否有其他方案。
- 3 回答
- 0 关注
- 396 浏览
添加回答
举报
0/150
提交
取消