【LeetCode 500】关关的刷题日记27 Keyboard Row

关关的刷题日记27 – Leetcode 500. Keyboard Row

题目

Given a List of words, return the words that can be typed using letters of alphabet on only one row's of American keyboard like the image below.

Example 1: Input: ["Hello", "Alaska", "Dad", "Peace"] Output: ["Alaska", "Dad"] Note: You may use one character in the keyboard more than once. You may assume the input string will only contain letters of alphabet.

题目的意思是给一串单词,让我们找出构成此单词的每一个字母在键盘的同一排的所有单词。键盘上的单词可以被多次使用,每个单词只包含字母。

思路

思路:键盘上一共有三排字母,我们可以建立三个set,然后拿到每个单词的各个字母去这三个set中找,如果此单词的所有字母都在同一个set中,就说明这个单词满足条件。

lass Solution {public:
    vector<string> findWords(vector<string>& words) {
        set<char>row1={'q','w','e','r','t','y','u','i','o','p'};
        set<char>row2={'a','s','d','f','g','h','j','k','l'};
        set<char>row3={'z','x','c','v','b','n','m'};
        vector<string>output;
        int i, j, k,p;
        for( i=0; i<words.size(); i++)
        {
            for( j=0; j<words[i].size(); j++)
            {
                if(row1.find(tolower(words[i][j]))==row1.end())
                    break;
            }
             for( k=0; k<words[i].size(); k++)
            {
                if(row2.find(tolower(words[i][k]))==row2.end())
                    break;
            }
             for( p=0; p<words[i].size(); p++)
            {
                if(row3.find(tolower(words[i][p]))==row3.end())
                    break;
            }
            int n=words[i].size();
            if(j==n || k==n || p==n )
                output.push_back(words[i]);
        }
        return output;
    }};

人生易老,唯有陪伴最长情,加油!

以上就是关关关于这道题的总结经验,希望大家能够理解,有什么问题可以在我们的专知公众号平台上交流或者加我们的QQ专知-人工智能交流群 426491390,也可以加入专知——Leetcode刷题交流群(请先加微信小助手weixinhao: Rancho_Fang)。

原文发布于微信公众号 - 专知(Quan_Zhuanzhi)

原文发表时间:2017-11-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏小樱的经验随笔

SG函数和SG定理【详解】

在介绍SG函数和SG定理之前我们先介绍介绍必胜点与必败点吧. 必胜点和必败点的概念: P点:必败点,换而言之,就是谁处于此位置,则在双方操作正确的情况下必败。...

3737
来自专栏AI研习社

用在数据科学上的 Python:你可能忘记的 8 个概念

如果你在编程的时候发现自己一遍又一遍的搜索同一个问题、概念或者语法,那么你并不孤单。

961
来自专栏怀英的自我修炼

Java漫谈2

本周我们的Java漫谈从一个段子说起。话说有一个老程序退休了,在家闲着没事便开始学习写毛笔字,焚香,研墨,铺纸。站在薄如蝉翼白似雪的宣纸面前,提笔闭目。只见那人...

3368
来自专栏JAVA高级架构开发

面向对象编程,再见!

作为程序员,你是使用函数式编程还是面向对象编程方式?在本文中,拥有 10 多年软件开发经验的作者从面向对象编程的三大特性——继承、封装、多态三大角度提出了自己的...

2970
来自专栏数说工作室

统计师的Python日记【第十天:数据聚合】

本文是【统计师的Python日记】第10天的日记 回顾一下: 第1天学习了Python的基本页面、操作,以及几种主要的容器类型。 第2天学习了python的函数...

5298
来自专栏趣谈编程

冒泡排序

面试官: 写一个冒泡排序吧 冒泡排序是一个比较经典和简单的排序算法,今天我们从从算法本身,时间复杂度以及稳定性方面来看看冒泡排序,这些方面也是研究其他排序算法的...

20010
来自专栏开发技术

排序之直接插入排序

本篇博客是在伍迷兄的博客基础上进行的,其博客地址点击就可以进去,里面好博客很多,我的排序算法都来自于此;一些数据结构方面的概念我就不多阐述了,伍迷兄的博客中都...

1441
来自专栏大数据挖掘DT机器学习

[笔记]使用Python一步一步地来进行数据分析

原文 http://www.cnblogs.com/nxld/p/6058998.html 你已经决定来学习Python,但是你之前没有编程经验。因此,你常常...

7276
来自专栏数据结构与算法

P2051 [AHOI2009]中国象棋

题目描述 这次小可可想解决的难题和中国象棋有关,在一个N行M列的棋盘上,让你放若干个炮(可以是0个),使得没有一个炮可以攻击到另一个炮,请问有多少种放置方法。大...

2865
来自专栏C语言及其他语言

[每日一题]方程的根

今天的每日一题是大家小学、初中、高中、大学都需要会的一种数学题,但只要我们会了代码,一切都只要输入数据就行,答案秒出,是不是简单了很多呢 题目描述 求方程 的...

2503

扫码关注云+社区

领取腾讯云代金券