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 from 1 to 9.
  • The number of words in s is between 1 and 9.
  • 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(' ');
    };
    
    

All Problems

All Solutions