首页 > 试题广场 >

翻转单词序列

[编程题]翻转单词序列
  • 热度指数:683031 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“nowcoder. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a nowcoder.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?

数据范围:
进阶:空间复杂度 ,时间复杂度 ,保证没有只包含空格的字符串
示例1

输入

"nowcoder. a am I"

输出

"I am a nowcoder."
示例2

输入

""

输出

""
头像 Maokt
发表于 2021-07-08 11:20:41
精华题解 算法思想一:分割+倒序 解题思路: Python : 由于 split() 方法将单词间的 “多个空格看作一个空格” (参考自 split()和split(' ')的区别 ),因此不会出现多余的 “空单词” 。因此,直接利用 reverse() 方法翻转单词列表 strs ,拼接为字符串 展开全文
头像 牛客题解官
发表于 2020-06-01 15:16:28
精华题解 题目的主要信息: 将一个英文语句以单词为单位逆序排放 所有单词之间用一个空格隔开,没有仅含空格的案例 举一反三: 学习完本题的思路你可以解决如下题目: JZ31. 栈的压入、弹出序列 方法一:两次反转(推荐使用) 思路: 我们需要的是将单词位置反转,也即是单词内部不变,属于字符串部分反转问题。如 展开全文
头像 漫漫云天自翱翔
发表于 2021-06-20 21:15:35
精华题解 题解一: 原地操作法解题思路:将后面的字符插入到前面。主要思路:1.使用两个指针:cur_end与 cur_insert , cur_end表示当前字符串末尾位置,cur_insert表示当前插入位置。2. 从尾至头处理str,cur_end分为三种情况 a.如果cur_end指向的是空字符且上 展开全文
头像 鸠摩罗什
发表于 2021-06-20 22:10:03
精华题解 描述        牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“nowcoder. a 展开全文
头像 Ironxin
发表于 2020-04-17 21:46:05
题目描输入一个英文句子,翻转句子的单词顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字符一样处理。例如,“student. a am I”。正确的输出应该是“I am a student.”。牛客上输入的是字符串,输出也是字符串。   一种解题思路,也是offer书上的,先翻转整个字符串 展开全文
头像 曰无衣bupt
发表于 2020-04-18 12:21:54
一行搞定它不香吗? class Solution: def ReverseSentence(self, s): return ' '.join(s.split(" ")[::-1])
头像 AaroninMind
发表于 2020-02-06 14:05:55
第一种方法:转换成string的字符串数组,然后拼接。这个拼接需要注意空格的拼接(最后一个单词结尾是没有空格分隔的) 第二种方法:剑指offer的思想,先翻转所有的字符,然后利用滑动窗口的思想,遇到' '就翻转,然后两者一起跳转到' '后重新滑动。 /** * @author 展开全文
头像 追风筝的人❥(^_-)Emma
发表于 2020-08-13 16:52:06
将字符串以空格分开变成数组,然后输出最后一个用StringBuilder拼接输出即可。 import java.util.*; public class Solution { public String ReverseSentence(String str) { if(str 展开全文
头像 法拉利201903231900848
发表于 2019-08-05 15:54:27
//牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。 //同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。 //例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am 展开全文
头像 ch_98
发表于 2022-01-26 10:56:27
先将字符串以空格分隔开,并把每一个单词入栈(需把空格补上),再使用栈将其将分隔开的每一个单词逆序存入StringBuilder即可 import java.util.*; public class Solution { public String ReverseSentence(Strin 展开全文
头像 子进
发表于 2022-06-23 18:47:08
```/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param str string字符串 * @return string字符串 * * C语言声明定义全局变量请加上static,防止重复定义 */ #include< 展开全文
头像 AJSpade
发表于 2020-04-24 11:31:27
题解中没看到用C++直接分割单词的方法,这里提供一种。可以用C++的字符流库<sstream>实现其他语言的split方法,以空格为分割点切分出单词存在vector中,然后逆序遍历vector即可。</sstream> string ReverseSentence(strin 展开全文
头像 扣得皮
发表于 2020-01-06 20:22:29
时间复杂度:O(n) 空间复杂度为:O(1) 笔记:String没有reverse()用法,StringBuffer.reverse()返回的是String import java.lang.StringBuffer; public class Solution { public Strin 展开全文
头像 西瓜丢了个芝麻
发表于 2020-02-17 19:21:44
利用栈“先进后出”的思想来进行反转。将原始字符串通过空格字符" "分解为多个子字符串,保存为字符串数组。遍历该数组将子字符进栈,进栈后还需要添加" "。值得注意的是,最后进栈的子字符串之后无需添加" ",因为其逆序后为字符串首字符。 import java.util.Stack; pu 展开全文