首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >leetcode-557-Reverse Words in a String III

leetcode-557-Reverse Words in a String III

作者头像
chenjx85
发布2018-05-22 16:30:30
4750
发布2018-05-22 16:30:30
举报

题目描述:

Given a string, you need to reverse the order of characters in each word within a sentence while still preserving whitespace and initial word order.

Example 1:

Input: "Let's take LeetCode contest"
Output: "s'teL ekat edoCteeL tsetnoc"

Note: In the string, each word is separated by single space and there will not be any extra space in the string.

要完成的函数:

string reverseWords(string s) 

说明:

1、这道题目不难,找到空格的位置,然后把空格前的单词做个反转,一直处理到最后碰到'\0'。

2、考虑一下全过程,定义两个位置index,一个记录起始位置i,一个一直循环直到遇到空格,记录空格符前一位的位置j。然后在i和j之间做一个反转,直接在字符串上实现就好了。

j一直循环下去,不断+1,直到碰到下一个空格字符。继续这样子处理。

直到最后j不会小于string的长度,这时候退出循环,返回原本字符串就可以了。

代码如下:

    string reverseWords(string s) 
    {
        int i=0,j=0,t1;
        char t;//交换字母的临时变量
        int s1=s.size();
        while(j<s1)
        {
            while(s[j]!=' '&&j<s1)
                j++;
            t1=j+1;//下一个单词开始的地方
            j--;//空格前一个字符
            while(i<j)
            {
                t=s[i];
                s[i]=s[j];
                s[j]=t;
                i++;
                j--;
            }
            i=t1;//更新i到下一个单词的首字母位置
            j=t1+1;//j依然在i的下一位
        }
        return s;
    }

上述代码实测25ms,beats 52.53% of cpp submissions。

3、改进:

在讨论区中看到有人使用了reverse函数,测试了一下,就变成了beats 98.76%……

同样分享给大家,代码如下:

    string reverseWords(string s) 
    {
        int i=0,j=0,t1;
        char t;
        int s1=s.size();
        while(j<s1)
        {
            while(s[j]!=' '&&j<s1)
                j++;
            reverse(&s[i], &s[j]);
            i=j+1;//i更新到下一个单词的首位
            j=i+1;//j在i的下一位
        }
        return s;
    }

上述代码实测22ms,beats 98.76% of cpp submissions。

花费时间变少了,可能是因为reverse函数被优化了?笔者其实觉得2中的代码已经算是很高效的了,想不出有哪里还可以继续改进……希望知道怎么改进的同学不吝赐教。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-05-02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目描述:
  • 要完成的函数:
  • 说明:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档