• 数字到字母表的映射组合


    假设我们有一个数字到字母表的映射:
    1-> ['a', 'b', 'c]
    2-> ['d’, 'e’]
    3-> ['f', 'g', "h]
    实现一个函数,对于给定的一串数字,例如"1". "233",返回一个包含所有可能的组合的字符串列表

    对于固定长度且长度较小的可以用多个for生成组成,对于本题这种不固定长度的要用递归来生成

    package main
    
    import (
    	"fmt"
    )
    
    func main() {
    	ret := letterConbination("3122")
    	fmt.Println(ret)
    
    }
    
    var numMap = map[string][]string{
    	"1": {"a", "b", "c"},
    	"2": {"d", "e"},
    	"3": {"f", "g", "h"},
    }
    
    func letterConbination(nums string) (ret []string) {
    
    	c := string(nums[0])
    	letterMap := numMap[c]
    
    	retconb := make([]string, 0)
    	if len(nums) > 1 {
    		retconb = letterConbination(string(nums[1:]))
    	}
    
    	for _, letter := range letterMap {
    
    		if len(nums) > 1 {
    			for _, conb := range retconb {
    				a := letter + conb
    				ret = append(ret, a)
    			}
    		} else {
    			ret = append(ret, letter)
    		}
    
    	}
    	return
    }
    
  • 相关阅读:
    php文件包含
    微信劫持反弹shell复现
    DNS劫持
    phpstudy后门漏洞复现
    使用远见远控软件控制靶机
    php基础及工具使用
    nmap扫描
    JavaScript创建对象几种形式
    浅拷贝与深拷贝
    原型和原型链
  • 原文地址:https://www.cnblogs.com/wahgon/p/15468665.html
Copyright © 2020-2023  润新知