Q.no 1 :- Reverse Vowels of a String
Given a string s, reverse only all the vowels in the string and return it.
Example:
Input: s = "IceCreAm"
Output: "AceCreIm"
Approach
Two-Pointer Technique
We use two pointers — one starting from the beginning (start) and one from the end (end) — to scan the string from both sides.Create a Vowel Lookup Object
Create an object namedvowelscontaining all vowels in both uppercase and lowercase (i.e.,a, e, i, o, u, A, E, I, O, U) to allow quick lookup.-
Initialize Pointers
-
start: initially points to the first character. -
end: initially points to the last character.
-
-
Loop Through the String
- Use the loop to evaluate the characters at
startandend. - Use:
let isStartVowel = vowels[chars[start]]; let isEndVowel = vowels[chars[end]]; - Use the loop to evaluate the characters at
- If both are vowels, swap them and move both pointers (
start++,end--). - If
isStartVowelis false, incrementstartto skip non-vowels. - If
isEndVowelis false, decrementendto skip non-vowels.
-
Continue until the
startpointer meets or crosses theendpointer.
Dry Run
📈 Time and Space Complexity
- Time Complexity: O(n) — each character is checked at most once.
- Space Complexity: O(n) — due to splitting the string into a character array.
Code
/**
* @param {string} s
* @return {string}
*/
var reverseVowels = function(s) {
let vowels = {
a: true, e: true, i: true, o: true, u: true,
A: true, E: true, I: true, O: true, U: true
};
let chars = s.split('');
let start = 0;
let end = s.length - 1;
while (start < end) {
let isStartVowel = vowels[chars[start]];
let isEndVowel = vowels[chars[end]];
if(isStartVowel && isEndVowel){
let temp = chars[start]
chars[start] = chars[end];
chars[end] = temp;
start++
end--
}else if(!isStartVowel){
start++
}else if(!isEndVowel){
end--
}
}
return chars.join('');
};
Q.no 2 :- Add Digits
Given an integer num, repeatedly add all its digits until the result has only one digit, and return it.
Example
Input: num = 38
Step 1: 3 + 8 = 11
Step 2: 1 + 1 = 2
Output: 2
Approach
There is a math shortcut that helps us jump directly to the final answer without doing all those steps.
Here's the rule:
If the number is 0, just return 0.
Otherwise, use this formula:
Answer = 1 + ((number - 1) % 9)
⏱️ Time and Space:
Time: O(1) → Always takes just one step.
Space: O(1) → Doesn’t use any extra memory.
/**
* @param {string} s
* @return {string}
*/
var reverseVowels = function(s) {
let vowels = {
a: true, e: true, i: true, o: true, u: true,
A: true, E: true, I: true, O: true, U: true
};
let chars = s.split('');
let start = 0;
let end = s.length - 1;
while (start < end) {
let isStartVowel = vowels[chars[start]];
let isEndVowel = vowels[chars[end]];
if(isStartVowel && isEndVowel){
let temp = chars[start]
chars[start] = chars[end];
chars[end] = temp;
start++
end--
}else if(!isStartVowel){
start++
}else if(!isEndVowel){
end--
}
}
return chars.join('');
};

Top comments (0)