源题目

https://leetcode-cn.com/problems/letter-case-permutation/

784. 字母大小写全排列

难度中等290
给定一个字符串S,通过将字符串S中的每个字母转变大小写,我们可以获得一个新的字符串。返回所有可能得到的字符串集合。

示例: 输入:S = “a1b2” 输出:[“a1b2”, “a1B2”, “A1b2”, “A1B2”] 输入:S = “3z4” 输出:[“3z4”, “3Z4”] 输入:S = “12345” 输出:[“12345”]

提示:

  • S 的长度不超过12。
  • S 仅由数字和字母组成。

通过次数39,500
提交次数57,795

  1. class Solution {
  2. /**
  3. * @param String $s
  4. * @return String[]
  5. */
  6. function letterCasePermutation($s) {
  7. $all = [$s];
  8. $s = str_split($s);
  9. $alphabets = str_split('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ');
  10. $chars = array_intersect($s, $alphabets);
  11. foreach($chars as $key => $value){
  12. foreach($all as $newString){
  13. $newStringArray = str_split($newString);
  14. $newStringArray[$key] = strtolower($newStringArray[$key]);
  15. $all[] = implode($newStringArray);
  16. $newStringArray = str_split($newString);
  17. $newStringArray[$key] = strtoupper($newStringArray[$key]);
  18. $all[] = implode($newStringArray);
  19. }
  20. }
  21. $all = array_unique($all);
  22. sort($all);
  23. return $all;
  24. }
  25. }