LEETCODE DIARY3: 电话按键对应字母排列组合

Letter Combinations of a Phone Number
//输入2~9构成的数字串,输出可能表示的字符串
//对应:0,1无对应字符,2-(abc) 3-(def) 4-(ghi) 5-(jkl) 6-(mno) 7-(pqrs) 8-(tuv) 9-(wxyz)
//找到的这个参考方法是c++语言的
//p.s. c++的vector类自带"push_back()"函数用于在vector尾部插入数据;string类也有push_back()用于在字符串后插入一个字符
class Solution {
public:
    vector<string> letterCombinations(string digits) 
    {
     	vector<string> res;
     	string charmap[10] = {"0","1","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};	//字符map
     	res.push_back("");	//初始大小为1(服务于下面的循环条件)
        
        if(digits.empty())  //对付输入是空的testcase
            {
                vector<string> null;
                return null;
            }
        

     	for(int i = 0; i < digits.size(); i++)
     	{
     		vector<string> temp;
     		string chars = charmap[digits[i]-'0'];	//数字对应的字符串  -'0'是减去0的ASCII码值,即将char的数字变为int
     		for(int c = 0; c < chars.size(); c++) //遍历数字对应字符
     			for(int j = 0; j < res.size(); j++)	//遍历已有字符串
     				temp.push_back(res[j] + chars[c]);	//输出已有字符串和新增字符的排列组合

     		res = temp;	//准备进入下一个循环
     	}
     	return res;
    }
};

总是在解决题目或者是参考他人解答方法的过程中学到有用的小知识,很开心!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值