Reverse Only Letters

 https://leetcode.com/problems/reverse-only-letters/

//1.[faster than 100.00%][stack][Runtime: 0 ms]
class Solution {
public:
    string reverseOnlyLetters(string s) {
        stack<char>letters;
        for (char c: s)
            if (isalpha(c))  letters.push(c);

        string ans;
        for (char c: s) {
            if (isalpha(c)){
                ans+=(letters.top());
                letters.pop();
            }else
                ans+=c;
        }
        return ans;
    }
};
//2.[faster than 100.00%][2 pointer][Runtime: 0 ms]
class Solution {
public:
    string reverseOnlyLetters(string s) {
        int left=0,right=s.length()-1;
        while(left<right){
            if(isalpha(s[left]) && isalpha(s[right])){
                swap(s[left],s[right]);
                left++;
                right--;
            }else if(!isalpha(s[left]) && !isalpha(s[right])){
                left++;
                right--;
            }else if(!isalpha(s[left])){
                left++;
            }else 
                right--;
        }
        return s;
    }
};

 

Comments

Popular posts from this blog

Perfect Peak of Array

Is Rectangle?

Sort array with squares!