为了账号安全,请及时绑定邮箱和手机立即绑定

保留原位置大小写字符串反转,请问这个题该怎么实现比较好

保留原位置大小写字符串反转,请问这个题该怎么实现比较好

PHP
紫衣仙女 2019-03-18 18:08:17
输入一句话,单词用空格分离,将每个单词反转,转换以后原位置字母的大小写保持跟原来一样。 后面个要求似乎有歧义,我再解释一下:原来第几个大写,转完以后还是第几个大写,不是原来大写的字母还是大写,就像例子这样,好好看例子呀。 例如: 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'));

?>
查看完整回答
反对 回复 2019-03-18
?
翻翻过去那场雪

TA贡献2065条经验 获得超14个赞

句子分成单词,单词分成字母数组,然后反转.
这里为止都是一步一步做就好,最后对齐大小写。
我的想法是用原顺序对比ctype_lower,检测出来之后修改新顺序的大小写状态即可。
不知大神们是否有其他方案。

查看完整回答
反对 回复 2019-03-18
  • 3 回答
  • 0 关注
  • 396 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信