Java教程

557. Reverse Words in a String III

本文主要是介绍557. Reverse Words in a String III,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

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

Example 1:

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

Input: s = "God Ding"
Output: "doG gniD"

Constraints:

1 <= s.length <= 5 * 104
s contains printable ASCII characters.
s does not contain any leading or trailing spaces.
There is at least one word in s.
All the words in s are separated by a single space.

Solution:

class Solution {
public:
    string reverseWords(string s) {
	int le = s.size()-1;
	int ri = s.size()-1;
	reverse(s.begin(), s.end());
	string newStr;
	while (le >= 0)
	{
		if (le == 0)
		{
			newStr.append(s.substr(0, ri - le + 1));
		}
		else if (s[le] == ' ')
		{
			newStr.append(s.substr(le+1, ri - le) + " ");
			ri = le-1;
		}
		le--;
	}
	return newStr;
    }
};

优化方案:

class Solution {
public:
    string reverseWords(string& s) {
        int i = 0;
        for (int j = 0; j < s.size(); ++j) {
            if (s[j] == ' ') {
                reverse(s.begin() + i, s.begin() + j);
                i = j + 1;
            }
        }
        reverse(s.begin() + i, s.end());
        return s;
    }
};
这篇关于557. Reverse Words in a String III的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!