周末快乐, 恢复更新了.
题目
给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。
示例 1:
输入:"Let's take LeetCode contest"
输出:"s'teL ekat edoCteeL tsetnoc"
注意:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。
分析
不同于之前的反转字符串I, 这道题反转的是一个句子或多个单词的短语, 并且不是原地反转在 C 的实现中, 原先的原地解法仍可保留, 不过在此基础上, 添加一个检测单词的功能, 再调用此前的解法逐一对单词进行反转即可.
在 Python 实现中,传入的也不再是字符数组, 而是一个字符串.字符串在 Python 中是不可变的类型, 之前那道题的写法在这里就不能直接用了.
实现
C语言
Python
在Python的实现中, 我没有采用上方C的解法, 原因是传入和返回的均非字符串数组, 若采用原地反转需要先转数组(单词), 再转回字符串(单词), 再拼接字符串数组(句子), 最后转回字符串返回(句子).
整个过程过于繁琐, 这里直接用 Python 的数组自带的方法, 对整个字符串做两次翻转实现反转字符串.
第一次整体反转, 整个字符串逆序.( )第二次单词次序反转, 对反转字符串分割为单词列表( ), 对单词次序反转( ).
领取专属 10元无门槛券
私享最新 技术干货