zoukankan      html  css  js  c++  java
  • LeetCode 17. *的字母组合

    题意

    给出一个包含数字2-9的字符串,返回其能表示的字母组合。每个数字到字母的映射参照电话按键。

    思路

    • 想法1:直接把各种组合写出来,(O(3^{n} imes 4^m)),其中(n)为对应3个字母的按键的个数,(m)为对应4个字母的按键的个数,且(n + m = len)
    • 想法2:原来只有上面的做法啊……

    代码

    class Solution {
    public:
        vector<string> letterCombinations(string digits) {
    
            if(digits == "")    return {};
    
            string MP[11] = {"", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"};
            int len = digits.size();
            vector<string> res = {""}, tem;
    
            for(int i = 0; i < len; ++i)
            {
                tem.clear();
                for(int j = 0; j < res.size(); ++j)
                {
    //                cout << "j = " << j << endl;
                    for(int k = 0; k < MP[digits[i] - '0'].size(); ++k)
                    {
    //                    cout << MP[digits[i] - '0'][k] << endl;
    //                    cout << res[j] + MP[digits[i] - '0'][k] << endl;
                        tem.push_back(res[j] + MP[digits[i] - '0'][k]);
                    }
                }
                res = tem;
            }
            return res;
        }
    };
    

    总结

    大力出奇迹。

  • 相关阅读:
    Oracle死锁
    Oralce新建用户及表空间维护
    oracle作业运行中,无法停止
    ora-01652 无法通过128 (在表空间 TEMP中)扩展temp段
    Centos7搭建Apache2.4
    LAMP搭建
    Mysql数据库
    VSFTPD服务器
    windows下划分逻辑分区
    sendmail邮件服务器
  • 原文地址:https://www.cnblogs.com/songjy11611/p/12331426.html
Copyright © 2011-2022 走看看