面试题 16.20. T9键盘

在老式手机上,用户通过数字键盘输入,手机将提供与这些数字相匹配的单词列表。每个数字映射到0至4个字母。给定一个数字序列,实现一个算法来返回匹配单词的列表。你会得到一张含有有效单词的列表。映射如下图所示:

在这里插入图片描述

示例 1:

输入: num = “8733”, words = [“tree”, “used”]
输出: [“tree”, “used”]
示例 2:

输入: num = “2”, words = [“a”, “b”, “c”, “d”]
输出: [“a”, “b”, “c”]

class Solution {
public:
    vector<string> getValidT9Words(string num, vector<string>& words) {
        vector<string> res;
        int key[26]={2,2,2,3,3,3,4,4,4,5,5,5,6,6,6,7,7,7,7,8,8,8,9,9,9,9};
        for(string word:words){
            bool isWord=true;
            for(int i=0;i<word.length();i++){
                if(num[i]-'0'!=key[word[i]-'a']){
                    isWord=false;
                    break;
                }
            }
            if(isWord) res.push_back(word);
        }
        return res;
    }
};

用一个数组存放每个字母对应的数字,遍历容器内的字符串,用string word:words,如果这个字符串的每一位对应key中的数字和给出的数字相等,那么这个字符串就被加入到答案数组中

©️2020 CSDN 皮肤主题: 像素格子 设计师:CSDN官方博客 返回首页