前言
虽然很简单,但是这个思路没有见过,暂且记下
题目
判断句子是否为全字母句 https://leetcode.cn/problems/check-if-the-sentence-is-pangram/description/
我的思路
创建一个26位数组,然后使用char作为索引操作数组,再使计数加一,以下是java版本
class Solution {
public boolean checkIfPangram(String sentence) {
if(sentence.length() < 26)
return false;
int[] timesArr = new int[26];
int count = 0;
for(int i = 0;i<sentence.length();i++){
if(timesArr[sentence.charAt(i) - 'a'] == 0){
timesArr[sentence.charAt(i) - 'a'] += 1;
count += 1;
}
}
if(count == 26)
return true;
return false;
}
}
别人的思路
使用二进制作为一个存储结构,然后对每个字符与这个二进制数进行异或,最后只需要判断是否等于即可
class Solution:
def checkIfPangram(self, sentence: str) -> bool:
state = 0
for c in sentence:
state |= 1 << (ord(c) - ord('a'))
return state == (1 << 26) - 1
# 作者:力扣官方题解
# 链接:https://leetcode.cn/problems/check-if-the-sentence-is-pangram/solutions/2017130/pan-duan-ju-# zi-shi-fou-wei-quan-zi-mu-ju-xc7a/
# 来源:力扣(LeetCode)
# 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。