ID | Title | Difficulty | |
---|---|---|---|
Loading... |
784. Letter Case Permutation
Medium
LeetCode
String, Backtracking, Bit Manipulation
Problem
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:
- 1 <= s.length <= 12
- s consists of lowercase English letters, uppercase English letters, and digits.
Code
class Solution {
public List<String> letterCasePermutation(String s) {
List<String> res = new ArrayList<>();
helper(res, s, 0, "");
return res;
}
private void helper(List<String> res, String s, int start, String curr) {
if (start > s.length()) return;
if (curr.length() == s.length()) {
res.add(curr);
return;
}
for (int i = start; i < s.length(); i++) {
char c = s.charAt(i);
if (Character.isDigit(c)) {
curr += c;
if (curr.length() == s.length()) {
res.add(curr);
return;
}
continue;
} else {
helper(res, s, i + 1, curr + Character.toLowerCase(c));
helper(res, s, i + 1, curr + Character.toUpperCase(c));
}
}
}
}
按 <- 键看上一题!
783. Minimum Distance Between BST Nodes
按 -> 键看下一题!
785. Is Graph Bipartite?