Welcome to Subscribe On Youtube
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(); } } ############ class Solution { public String sortSentence(String s) { String[] words = s.split(" "); String[] ans = new String[words.length]; for (String w : words) { int i = w.charAt(w.length() - 1) - '1'; ans[i] = w.substring(0, w.length() - 1); } return String.join(" ", ans); } }
-
// OJ: https://leetcode.com/problems/sorting-the-sentence/ // Time: O(N) // Space: O(N) class Solution { public: string sortSentence(string s) { istringstream iss(s); string word, ans; vector<string> v(9); while (iss >> word) { v[word.back() - '1'] = word.substr(0, word.size() - 1); } for (int i = 0; i < 9 && v[i].size(); ++i) { if (i > 0) ans += " "; ans += v[i]; } return ans; } };
-
class Solution: def sortSentence(self, s: str) -> str: words = s.split() ans = [None] * len(words) for w in words: i = int(w[-1]) - 1 ans[i] = w[:-1] return ' '.join(ans) ############ # 1859. Sorting the Sentence # https://leetcode.com/problems/sorting-the-sentence/ class Solution: def sortSentence(self, S: str) -> str: s = S.split() n = len(s) res = [""] * n for c in s: i = int(c[-1]) res[i - 1] = c[:-1] return " ".join(res)
-
func sortSentence(s string) string { words := strings.Split(s, " ") ans := make([]string, len(words)) for _, w := range words { i := w[len(w)-1] - '1' ans[i] = w[:len(w)-1] } return strings.Join(ans, " ") }
-
function sortSentence(s: string): string { const words = s.split(' '); const ans = new Array(words.length); for (const w of words) { const i = w.charCodeAt(w.length - 1) - '1'.charCodeAt(0); ans[i] = w.slice(0, w.length - 1); } return ans.join(' '); }
-
/** * @param {string} s * @return {string} */ var sortSentence = function (s) { const words = s.split(' '); const ans = new Array(words.length); for (const w of words) { const i = w.charCodeAt(w.length - 1) - '1'.charCodeAt(0); ans[i] = w.slice(0, w.length - 1); } return ans.join(' '); };