Sunday, January 11, 2015

LeetCode 151: Reverse Words in a String

Given an input string, reverse the string word by word.
For example,
Given s = "the sky is blue",
return "blue is sky the".
Clarification:
  • What constitutes a word?
    A sequence of non-space characters constitutes a word.
  • Could the input string contain leading or trailing spaces?
    Yes. However, your reversed string should not contain leading or trailing spaces.
  • How about multiple spaces between two words?
    Reduce them to a single space in the reversed string.
public class Solution {
    public String reverseWords(String s) {
		int n = s.length();
		
		if (n == 0)
			return "";
 
		// Split words by space
		String[] words = s.split(" ");
		
		// Use append function
		// Note: If we use 'String' type rather than 'StringBuilder', memory limit will exceed.
		StringBuilder sb = new StringBuilder();
		
		for (int i = words.length-1; i >= 0; i--)
		{
		    if (!words[i].equals(""))
		    {
			    sb.append(words[i]);
			    sb.append(" ");
		    }
		}
		
		if (sb.length() == 0)
		    return "";
		else
		    return sb.substring(0, sb.length()-1);
    }
}

No comments:

Post a Comment