开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第19天,点击查看活动详情
前言
从零开始学习c++,每天起码做一道leetcode题目,在此记录,希望最后能够有所收获!
一、题目描述
全字母句 指包含英语字母表中每个字母至少一次的句子。
给你一个仅由小写英文字母组成的字符串 sentence ,请你判断 sentence 是否为 全字母句 。
如果是,返回 true ;否则,返回 false 。
示例 1:
输入:sentence = "thequickbrownfoxjumpsoverthelazydog"
输出:true
解释:sentence 包含英语字母表中每个字母至少一次。
示例 2:
输入: sentence = "leetcode"
输出: false
提示:
1 <= sentence.length <= 1000sentence由小写英语字母组成
二、思路分析
看到这题,先开始还误解了题意,以为只要有字母就行。后来仔细一看,才发现是要26个字母至少都出现一次。
先开始想到的是类似于建立一个常量之类的类型,把26个字母都写进去,再遍历字符串,但仔细一想,漏洞太多。
又思考了一下,想到了哈希表的不重复特性,用在这里简直再合适不过了。遍历存进去,看最后哈希表中是否有26个元素即能得到最后的结果。
三、AC代码
class Solution {
public:
bool checkIfPangram(string sentence) {
if(sentence.size()<26){
return false;
}
set<char>nums;
for(int i=0;i<sentence.size();i++){
nums.insert(sentence[i]);
}
if(nums.size()==26){
return true;
}
else{
return false;
}
}
};
提交排名
四、总结
看了一下别人的做法,有一种是创建长度为26的数组,这跟我这种方法大同小异。
另一种是利用二进制,还用到了左移运算符,之前刷到过用了左移运算符的题目,现在又忘了,又去了解了一下,把忘掉的东西捡起来。