From a8b67d412d832035778a5a182bce21c8f2f4a6c3 Mon Sep 17 00:00:00 2001 From: aadil42 <77232799+aadil42@users.noreply.github.com> Date: Tue, 23 Jul 2024 01:09:50 +0530 Subject: [PATCH 1/2] Create 0767-reorganize-string.js --- javascript/0767-reorganize-string.js | 50 ++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 javascript/0767-reorganize-string.js diff --git a/javascript/0767-reorganize-string.js b/javascript/0767-reorganize-string.js new file mode 100644 index 000000000..cba825445 --- /dev/null +++ b/javascript/0767-reorganize-string.js @@ -0,0 +1,50 @@ +/** + * MaxHeap | Hashing + * Time O(n*log(n)) | Space O(n) + * https://leetcode.com/problems/reorganize-string/ + * @param {string} s + * @return {string} + */ +var reorganizeString = function(s) { + + const maxQ = new MaxPriorityQueue({ + compare: (a,b) => { + return b[0] - a[0]; + } + }); + + const freq = {}; + for(let i = 0; i < s.length; i++) { + const char = s[i]; + freq[char] = (freq[char] && freq[char] + 1 || 1); + } + for(const key in freq) { + const val = freq[key]; + maxQ.enqueue([val, key]); + } + + let orgStr = ""; + while(!maxQ.isEmpty()) { + + const [occurance, char] = maxQ.dequeue(); + + if(orgStr[orgStr.length - 1] === char) { + + if(maxQ.isEmpty()) return ""; + + const [occurance1, char1] = maxQ.dequeue(); + orgStr += char1; + if(occurance1-1) { + maxQ.enqueue([occurance1-1, char1]); + } + maxQ.enqueue([occurance, char]); + } else { + orgStr += char; + if(occurance-1) { + maxQ.enqueue([occurance-1, char]); + } + } + } + + return orgStr; +}; From ce894e8bee12cbfb1763565bbbce4fbecfb24f63 Mon Sep 17 00:00:00 2001 From: Yaseen Khan Date: Sat, 28 Sep 2024 21:50:35 -0700 Subject: [PATCH 2/2] Fixed Formatting 0767-reorganize-string.js --- javascript/0767-reorganize-string.js | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/javascript/0767-reorganize-string.js b/javascript/0767-reorganize-string.js index cba825445..c4798c81d 100644 --- a/javascript/0767-reorganize-string.js +++ b/javascript/0767-reorganize-string.js @@ -8,40 +8,40 @@ var reorganizeString = function(s) { const maxQ = new MaxPriorityQueue({ - compare: (a,b) => { + compare: (a, b) => { return b[0] - a[0]; } }); const freq = {}; - for(let i = 0; i < s.length; i++) { + for (let i = 0; i < s.length; i++) { const char = s[i]; freq[char] = (freq[char] && freq[char] + 1 || 1); } - for(const key in freq) { + for (const key in freq) { const val = freq[key]; maxQ.enqueue([val, key]); } let orgStr = ""; - while(!maxQ.isEmpty()) { + while (!maxQ.isEmpty()) { const [occurance, char] = maxQ.dequeue(); - if(orgStr[orgStr.length - 1] === char) { + if (orgStr[orgStr.length - 1] === char) { - if(maxQ.isEmpty()) return ""; + if (maxQ.isEmpty()) return ""; const [occurance1, char1] = maxQ.dequeue(); orgStr += char1; - if(occurance1-1) { - maxQ.enqueue([occurance1-1, char1]); + if (occurance1 - 1) { + maxQ.enqueue([occurance1 - 1, char1]); } maxQ.enqueue([occurance, char]); } else { orgStr += char; - if(occurance-1) { - maxQ.enqueue([occurance-1, char]); + if (occurance - 1) { + maxQ.enqueue([occurance - 1, char]); } } }