class Solution { public List letterCasePermutation(String S) { List ans = new ArrayList(); ans.add(new StringBuilder()); for (char c: S.toCharArray()) { int n = ans.size(); if (Character.isLetter(c)) { for (int i = 0; i < n; ++i) { ans.add(new StringBuilder(ans.get(i))); ans.get(i).append(Character.toLowerCase(c)); ans.get(n + i).append(Character.toUpperCase(c)); } } else { for (int i = 0; i < n; ++i) ans.get(i).append(c); } } List finalans = new ArrayList(); for (StringBuilder sb: ans) finalans.add(sb.toString()); return finalans; } /*public List letterCasePermutation(String S) { int B = 0; for (char c: S.toCharArray()) if (Character.isLetter(c)) B++; List ans = new ArrayList(); for (int bits = 0; bits < 1<> b++) & 1) == 1) word.append(Character.toLowerCase(letter)); else word.append(Character.toUpperCase(letter)); } else { word.append(letter); } } ans.add(word.toString()); } return ans; }*/ }