跟着姚桑学算法-翻转单词顺序

简介: 剑指offer算法

题. 翻转单词顺序

输入一个英文句子, 单词之间用一个空格隔开,且句首和句尾没有多余空格。

翻转句子中单词的顺序,但单词内字符的顺序不变。

为简单起见,标点符号和普通字母一样处理。

例如输入字符串"I am a student.",则输出"student. a am I"

数据范围

输入字符串长度 [0,1000]。

样例

输入:"I am a student."

输出:"student. a am I"

【题解】--- 双指针

  • 用 i 遍历字符串,遇到字母空格后的字母即为单词首字母。
  • 然后,用 j = i 开始往后遍历,找到下一个空格或者走到字符串末尾停止。
  • 此时,如果 j 不是字符串结尾,则i 和 j 之间就是单词,用 k 遍历 i 到 j - 1,得到单词。如果 j 指向 是字符串末尾,则 s[j] 也是单词一部分,加入。
  • 将得到的字符串加在结果前面。如果 j 不是字符串末尾,说明后面还有单词,则结果前面再加个空格。
  • 最终输出结果。

复杂度分析:

时间复杂度是O(n^2)。

C++代码实现:

class Solution {
public:
    string reverseWords(string s) {
        string res;
        for(int i = 0; i < s.size(); i++)
        {
            while(s[i] == ' ') i++;//找到单词首字母
            int j = i;
            while(j < s.size() && s[j] != ' ') j ++;//找到单词末尾
            string temp;//保存单词
            for(int k = i; k < j; k++) temp += s[k];
            if(j == s.size() - 1) temp = s[j] + temp;//如果j是字符串末尾,则单词中加入s[j]。

            if(j != s.size()) res = ' ' + temp + res;//如果不是字符串末尾,则结果中需要加入空格
            else res = temp + res;//是字符串末尾,则不需要加入空格。
            i = j ;//找下一个单词

        }
        return res;//返回结果
    }
};
目录
相关文章
|
7月前
|
算法 vr&ar 图形学
☆打卡算法☆LeetCode 226. 翻转二叉树 算法解析
☆打卡算法☆LeetCode 226. 翻转二叉树 算法解析
|
7月前
|
算法
算法编程(二十八):重新排列单词间的空格
算法编程(二十八):重新排列单词间的空格
59 0
|
7月前
|
算法
算法编程(二十五):检查单词是否为句中其他单词的前缀
算法编程(二十五):检查单词是否为句中其他单词的前缀
64 0
|
7月前
|
存储 自然语言处理 算法
算法编程(十九):词典中最长的单词
算法编程(十九):词典中最长的单词
73 0
|
7月前
|
存储 JavaScript 算法
TypeScript算法专题 - blog4 - 单链表节点的两-两翻转(两两一组逆序)
TypeScript算法专题 - blog4 - 单链表节点的两-两翻转(两两一组逆序)
53 0
|
4月前
|
算法 容器
【算法】滑动窗口——串联所有单词的子串
【算法】滑动窗口——串联所有单词的子串
|
6月前
|
存储 机器学习/深度学习 算法
python 五种算法转置后翻转、层次旋转、递归分块、一次性旋转、环状替换 实现旋转图像【力扣题48】
python 五种算法转置后翻转、层次旋转、递归分块、一次性旋转、环状替换 实现旋转图像【力扣题48】
|
6月前
|
存储 SQL 算法
LeetCode题58: 5种算法实现最后一个单词的长度【python】
LeetCode题58: 5种算法实现最后一个单词的长度【python】
|
6月前
|
算法 Java C语言
【经典算法】LeetCode25:K 个一组翻转链表(Java/C/Python3,Hard)
【经典算法】LeetCode25:K 个一组翻转链表(Java/C/Python3,Hard)
40 1
|
6月前
|
算法
【经典LeetCode算法题目专栏分类】【第3期】回溯问题系列:单词搜索、N皇后问题、判断有效数独、解数独
【经典LeetCode算法题目专栏分类】【第3期】回溯问题系列:单词搜索、N皇后问题、判断有效数独、解数独