Formatted question description: https://leetcode.ca/all/1859.html
1859. Sorting the Sentence
Level
Easy
Description
A sentence is a list of words that are separated by a single space with no leading or trailing spaces. Each word consists of lowercase and uppercase English letters.
A sentence can be shuffled by appending the 1-indexed word position to each word then rearranging the words in the sentence.
- For example, the sentence
"This is a sentence"
can be shuffled as"sentence4 a3 is2 This1"
or"is2 sentence4 This1 a3"
.
Given a shuffled sentence s
containing no more than 9
words, reconstruct and return the original sentence.
Example 1:
Input: s = “is2 sentence4 This1 a3”
Output: “This is a sentence”
Explanation: Sort the words in s to their original positions “This1 is2 a3 sentence4”, then remove the numbers.
Example 2:
Input: s = “Myself2 Me1 I4 and3”
Output: “Me Myself and I”
Explanation: Sort the words in s to their original positions “Me1 Myself2 and3 I4”, then remove the numbers.
Constraints:
2 <= s.length <= 200
s
consists of lowercase and uppercase English letters, spaces, and digits from1
to9
.- The number of words in
s
is between1
and9
. - The words in
s
are separated by a single space. s
contains no leading or trailing spaces.
Solution
Split s
into an array of String
. For each word, get the index and put the word to the correct place. Finally, join the words in the original order to reconstruct the original sentence.
class Solution {
public String sortSentence(String s) {
String[] array = s.split(" ");
int length = array.length;
String[] newArray = new String[length];
for (int i = 0; i < length; i++) {
int wordLength = array[i].length();
String word = array[i].substring(0, wordLength - 1);
int index = array[i].charAt(wordLength - 1) - '0' - 1;
newArray[index] = word;
}
StringBuffer sb = new StringBuffer(newArray[0]);
for (int i = 1; i < length; i++)
sb.append(" " + newArray[i]);
return sb.toString();
}
}