Java教程

数字到字母表的映射组合

本文主要是介绍数字到字母表的映射组合,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

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

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
}

 

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

 

这篇关于数字到字母表的映射组合的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!