2021-02-16 Daily-Challenge

Today I have done leetcode's February LeetCoding Challenge with cpp.

February LeetCoding Challenge 16

Description

Letter Case Permutation

Given a string S, we can transform every letter individually to be lowercase or uppercase to create another string.

Return a list of all possible strings we could create. You can return the output in any order.

Example 1:

Input: S = "a1b2"
Output: ["a1b2","a1B2","A1b2","A1B2"]

Example 2:

Input: S = "3z4"
Output: ["3z4","3Z4"]

Example 3:

Input: S = "12345"
Output: ["12345"]

Example 4:

Input: S = "0"
Output: ["0"]

Constraints:

  • S will be a string with length between 1 and 12.
  • S will consist only of letters or digits.

Solution

class Solution {
    int len;
    void dfs(vector<string> &answer, string &S, int pos) {
        if(pos == len) {
            answer.push_back(S);
            return;
        }
        if(!isalpha(S[pos])) {
            dfs(answer, S, pos + 1);
            return;
        }
        S[pos] = tolower(S[pos]);
        dfs(answer, S, pos + 1);
        S[pos] = toupper(S[pos]);
        dfs(answer, S, pos + 1);
    }
public:
    vector<string> letterCasePermutation(string S) {
        vector<string> answer;
        len = S.length();
        dfs(answer, S, 0);
        
        return move(answer);
    }
};