只爱洗碗 2021-11-12 07:17 采纳率: 89.5%
浏览 19

翻转单词序列 翻转单词序列

例如,“nowcoder. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a nowcoder.”

img

  • 写回答

1条回答 默认 最新

  • 从善若水 5G/6G通信领域优质创作者 2021-11-12 07:27
    关注
    
    //翻转str从s到e的部分
        void ReverseWord(string &str, int s, int e)
        {
            while(s < e)
                swap(str[s++], str[e--]);
        }
    
        string ReverseSentence(string str) {
            ReverseWord(str, 0, str.size() - 1); //先整体翻转
            int s = 0, e = 0;
            int i = 0;
            while(i < str.size())
            {
                while(i < str.size() && str[i] == ' ') //空格跳过
                    i++;
                e = s = i; //记录单词的第一个字符的位置
                while(i < str.size() && str[i] != ' ') //不是空格 找单词最后一个字符的位置
                {
                    i++;
                    e++;
                }
                ReverseWord(str, s, e - 1); //局部翻转
            }
            return str;
        }
    
    评论

报告相同问题?

问题事件

  • 创建了问题 11月12日

悬赏问题

  • ¥15 请问Ubuntu要怎么安装chrome呀?
  • ¥15 视频编码 十六进制问题
  • ¥15 Xsheii7我安装这个文件的时候跳出来另一个文件已锁定文件的无一部分进程无法访问。这个该怎么解决
  • ¥15 unity terrain打包后地形错位,跟建筑不在同一个位置,怎么办
  • ¥15 FileNotFoundError 解决方案
  • ¥15 uniapp实现如下图的图表功能
  • ¥15 u-subsection如何修改相邻两个节点样式
  • ¥30 vs2010开发 WFP(windows filtering platform)
  • ¥15 服务端控制goose报文控制块的发布问题
  • ¥15 学习指导与未来导向啊