当前位置: 首页 > 科技观察

LeetCode电话号码的字母组合

时间:2023-03-12 23:02:40 科技观察

前言我们社区会继续解决谷一(Netflix成长黑客,《iOS 面试之道》作者,ACE职业健身教练。微博:@古谣道长[1])的Swift算法题整理成文字版,方便大家学习阅读。到目前为止,我们已经更新了16期的LeetCode算法。我们会保持更新时间和进度(周一、周三、周五上午9:00发布)。每期内容不多。希望大家在上班的路上读一读,积累久了会有很大的提升。不积步,无以至万里;不积小流,则不成江海。Swift社区将陪伴您一路前行。如果您有建议和意见,请在文末留言,我们将尽力满足您的需求。难度等级:中等1.描述给定一个只包含数字2-9的字符串,返回它能代表的所有字母组合。可以按任何顺序返回答案。数字到字母的映射如下(与电话键相同)。请注意,1不对应任何字母。2.示例示例1输入:digits="23"输出:["ad","ae","af","bd","be","bf","cd","ce","cf"]示例2输入:digits=""输出:[]示例3输入:digits="2"输出:["a","b","c"]约束:0<=digits.length<=4digits[i]是['2','9']范围内的数字3。答案classLetterCombinationsPhoneNumber{funcletterCombinations(_digits:String)->[String]{guarddigits.count>0else{return[String]()}varcombinations=[String](),combination=""letnumberToStr=["","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"]dfs(&combinations,&combination,numberToStr,digits,0)returncombinations}privatefuncdfs(_combinations:inout[String],_combination:inoutString,_numberToStr:[String],_digits:String,_index:Int){ifcombination.count==digits.count{combinations.append(combination)return}letcurrentStr=fetchCurrentStr(from:digits,at:index,numberToStr)forcharincurrentStr{combination.append(char)dfs(&combinations,&combination,numberToStr,digits,index+1)combination.removeLast()}}privatefuncfetchCurrentStr(从数字:String,atindex:Int,_numberToStr:[String])->String{guardindex>=0&&index=0,currentDigit