题目描述:
全字母句 指包含英语字母表中每个字母至少一次的句子。
给你一个仅由小写英文字母组成的字符串 sentence ,请你判断 sentence 是否为 全字母句 。
如果是,返回 true ;否则,返回 false 。
这道题让我们判断是否为全字母句,我们可以定义一个长度为26的nums数组,用来存放字符出现的次数,因为字符a到字符z的ASCII码值是26个连续的数值。如果该数组的某个值为0,则代表该字符未出现,即该句不是全字母句。
首先我们遍历字符串sentence时,通过将sentence[ i ] - ' a '可得出sentence[ i ]字符的相对ASCII值映射到数组上,字符' a '出现次数映射到nums[ 0 ],字符' z '出现次数映射到nums[ 25 ],这样就可以得出结果。
代码实现:
class Solution {
public:
bool checkIfPangram(string sentence) {
int nums[26] = {0};
for (int s: sentence) {//范围for循环遍历sentence数组
nums[s - 'a']++; //通过s - 'a'得出相对ASCII码值,映射出字符的索引
}
for (int s: nums) {
if (s == 0) { //若s = 0则该字符未出现,返回false
return false;
}
}
return true; //若 所有s != 0 则说明字符都出现过 返回true即可
}
};
这个0ms应该有点问题,但提交了几次都是这样,emmmm。但哈希表确实快。