zoukankan      html  css  js  c++  java
  • 刷题17. Letter Combinations of a Phone Number

    一、题目说明

    题目17. Letter Combinations of a Phone Number,题目给了下面一个图,输入一个字符串包括2-9,输出所有可能的字符组合。

    如输入23所有可能的输出:

    "ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"
    

    二、我的做法

    这个题目,我思考了4个小时(惭愧严重超时了),做法如下:

    #include<iostream>
    #include<vector>
    #include<unordered_map>
    using namespace std;
    class Solution{
    	public:
    		vector<string> letterCombinations(string s){
    			vector<string> res;
    
    			if(s.size()<1) return res;
    			int num = 1;
    			unordered_map<char,string> ump;
    			
    			ump['2'] = "abc";
    			ump['3'] = "def";
    			ump['4'] = "ghi";
    			ump['5'] = "jkl";
    			ump['6'] = "mno";
    			ump['7'] = "pqrs";
    			ump['8'] = "tuv";
    			ump['9'] = "wxyz";
    			
    			for(int i=0;i<s.size();i++){
    				switch(s[i]){
    					case '2':
    					case '3':
    					case '4':
    					case '5':
    					case '6':
    					case '8':
    						num *= 3;
    						break;
    					case '7':
    					case '9':
    					    num *=4;
    						break;					
    				}
    			}
    			for(int i=0;i<num;i++){
    				res.push_back("");
    			}
    
                int curNum = num;
    			for(int j=0;j<s.size();++j){
    				char curr = s[j];
    				string curStr = ump[curr];
    				curNum /= curStr.size();
    			    for(int i=0;i<num;i++){
    			    	res[i].push_back(curStr[i / curNum % curStr.size()]);
    				}
    			}
    
    			return res;
    		} 
    };
    int main(){
    	Solution s;
    //    vector<string> r = s.letterCombinations("234");
    //    for(vector<string>::iterator it=r.begin();it!=r.end();++it){
    //		cout<<*it<<" ";
    //	}
    //	cout<<endl;
    	vector<string> r = s.letterCombinations("8");
        for(vector<string>::iterator it=r.begin();it!=r.end();++it){
    		cout<<*it<<" ";
    	}
    	return 0;
    }
    

    这个是我第一次,做“完美”的代码。臭美一下!

    Runtime: 0 ms, faster than 100.00% of C++ online submissions for Letter Combinations of a Phone Number.
    Memory Usage: 8.4 MB, less than 100.00% of C++ online submissions for Letter Combinations of a Phone Number.
    

    三、更优化的做法

    第一次可以自豪的说一句,这个就是最优化的代码了。哈哈!

    所有文章,坚持原创。如有转载,敬请标注出处。
  • 相关阅读:
    springboot springcloud zuul 过滤器
    springboot springcloud eureka 熔断器
    javaweb servlet filter
    maven nexus 搭建私服(二)
    springboot springcloud zuul 网关入门
    springboot springcloud 配置中心
    springboot springcloud eureka 入门
    java rabbitmq
    java jvm调优
    maven nexus 搭建私服(一)
  • 原文地址:https://www.cnblogs.com/siweihz/p/12234127.html
Copyright © 2011-2022 走看看