这道题要求手机上,不同的数字所对应的字母的组合,就是一步步往上求就可以了,可能有点类似于动态规划的
先求解子问题,再求出总的
#include<iostream> #include<vector> #include <map> #include<string> using namespace std; static string str[10]={"0","1","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"}; vector<string> To_next(vector<string>& str1,char a) { vector<string> lastresult; string b=str[a-48]; int len_b=b.size(); int len_str1=str1.size(); string temp; for(int i=0;i<len_b;i++) { for(int j=0;j<len_str1;j++) lastresult.push_back(str1[j]+b[i]); } return lastresult; } vector<string> letterCombinations(string digits) { vector<string> str0; int len=digits.size(); if(digits.empty()) return str0; for(int i=0;i<str[digits[0]-48].size();i++) { string temp1; temp1.push_back(str[digits[0]-48][i]); str0.push_back(temp1); } for(int i=1;i<digits.size();i++) { vector<string> str1=To_next(str0,digits[i]); str0=str1; } return str0; } int main() { }
时间: 2024-10-07 02:26:13