Problem
Reverse the words in a given sentence. Words are always delimited by spaces. For example if the given word is "reverse words of a sentence". The output will be "sentence a of words reverse"
Solution
Reverse the complete sentence and then reverse every part of sentence which is delimited by spaces.
Code
public class ReverseWordsInSentence { public static void main(String[] args) { String str = "reverse words of a sentence"; String result = reverseWords(str); System.out.println(result); } private static String reverseWords(String str) { char[] chars = str.toCharArray(); reverse(chars, 0, chars.length - 1); int wordStart = 0; int wordEnd = 0; while (wordEnd < chars.length) { if (chars[wordEnd] == ' ') { reverse(chars, wordStart, wordEnd - 1); wordStart = wordEnd + 1; } wordEnd++; } reverse(chars, wordStart, wordEnd - 1); return new String(chars); } private static void reverse(char[] chars, int i, int j) { while (i < j) { char temp = chars[i]; chars[i] = chars[j]; chars[j] = temp; i++; j--; } } }
No comments:
Post a Comment