zoukankan      html  css  js  c++  java
  • 784. Letter Case Permutation

    package LeetCode_784
    
    /**
     * 784. Letter Case Permutation
     * https://leetcode.com/problems/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:
    1. S will be a string with length between 1 and 12.
    2. S will consist only of letters or digits.
     * */
    class Solution {
        /*
        * solution: dfs + backtracking, Time:O(2^n), Space:O(2^n)
        * */
        fun letterCasePermutation(S: String): List<String> {
            val result = ArrayList<String>()
            if (S == null || S.isEmpty()) {
                return result
            }
            dfs(0, S.toCharArray(), result)
            return result
        }
    
        private fun dfs(pos: Int, chars: CharArray, result: ArrayList<String>) {
            if (pos == chars.size) {
                result.add(String(chars))
                return
            }
            if (chars[pos].isDigit()) {
                //if digit, check next char
                return dfs(pos + 1, chars, result)
            }
            //change current pos to lower case
            chars[pos] = chars[pos].toLowerCase()
            //and keep tracking via next level
            dfs(pos + 1, chars, result)
            //change current pos to upper case
            chars[pos] = chars[pos].toUpperCase()
            //and keep tracking via next level
            dfs(pos + 1, chars, result)
        }
    }
  • 相关阅读:
    春节不回家
    夜间突然发烧,无法入眠
    歌词写得真好
    近日看到网上许多BBS寻找SAP及ABAP程序的学习资料,本人深知学习的艰辛与不易,特贡献自己多年的学习资料,完全免费
    人生的真谛
    SMARTFORMS的调用方法(作者:曹玉平)
    自己给自己当医生
    将ocx添加到.NET
    AQtime + ocx/dll
    ActiveX:创建安装:
  • 原文地址:https://www.cnblogs.com/johnnyzhao/p/14070253.html
Copyright © 2011-2022 走看看