557. Reverse Words in a String III

1.问题描述

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.

来自 https://leetcode.com/problems/reverse-words-in-a-string-iii/description/

2.题目分析

给定一个字符串,反转每个单词中的字符顺序,同时仍然保留空格和单词原来的顺序。简单的方法就是使用left和right,left指向要反转的单词的第一个字母,right指向单词最后一个字母后的空格,然后进行反转,再更新left和right进行下一个单词的反转。

3.C++代码

//我的代码:(beats 98%)
void reverseSubStr(string &s, int l, int r)
{   //反转s[l..r]
    char tmp;
    while (l <r)
    {
        tmp = s[r];
        s[r] = s[l];
        s[l] = tmp;
        l++; r--;
    }
}
string reverseWords(string &s) 
{
    int L = s.length();
    int left = 0;
    int right = 0;
    while (right < L)
    {
        if (s[right] != ' ')
        {
            right++;
            if (right != L)
                continue;
        }
        reverseSubStr(s, left, right-1);
        left = right + 1;
        right ++;
    }
    return s;
}

猜你喜欢

转载自blog.csdn.net/qq_29689907/article/details/80302657
今日推荐