• 记5.28leetcode简单题


    5.28

    因为Ipad暂时不能使用,所以把leetcode的刷题记录放在博客上,记录自己这个只敢刷简单题的菜鸟进步的过程。

    1.判断句子是否全字母

    因为有段时间没有刷力扣了,所以随机了一个简单题来练练手,然后刚好是我最熟悉的字母存在的题,然后就直接A了。

    思路:

    这个题目很简单,没有什么很厉害的方法,这个题目的要求就是判断这个句子的小写字母是否全部出现,所以我们可以分为两步:

    1.用int数组存放所有字母出现的次数

    2.当某个字母出现次数为0就false

    然后这个题目就A了!!!

    代码:

    class Solution {
        public boolean checkIfPangram(String sentence) {
            int[] Hash = new int[26];
            for(Character c : sentence.toCharArray()){
                Hash[c-'a']++;
            }
            for(int i : Hash){
                if(i == 0){
                    return false;
                }
            }
            return true;
        }
    }
    
    class Solution {
    public:
        bool checkIfPangram(string s) {
        int Hash[26]={0};
        for(int i = 0; i < s.length(); i++){
            Hash[s[i]-'a']++;
        }
        for(int j = 0; j < 26; j++){
            if(Hash[j] == 0){
                return false;
            }
        }
        return true;
        }
    };
    

    c++小tips:

    • 静态数组Hash一定要记得初始化0
    • 不能用for each,老老实实一个个的遍历string的下标,c++里面string可以看为一个数组

    方法实现:

    我这里用了Hash数组的来存放字母出现的次数,我们要存放a-z的次数,我们可以用(char - ‘a')的方式来表示26个字母,通过减去a的ASCLL码值可以表示a-z的顺序关系,从而将a-z存放进数组下标0-25,文字表达可能不是很清晰,可以通过下图来理解:

    然后接下来我们遍历句子sentence的每一个字母,用foreach来遍历,然后注意这里的toCharArray()方法将string转为了字符数组形式,因为foreach的:后面需要接相同类型的对象,存放完字母的出现次数,就可以遍历所有的值,发现有值为0说明缺少了这个字母,return false。

    完成(c++要快一点)

  • 相关阅读:
    aws 计费查询
    关于网络抖动
    word2vec和onehot
    缺少了目标的教育是彻底的失败
    做事要风险控制
    SPS中计算值公式函数简介
    Moss + InfoPath 表单工作流开发要点
    【译】What is the NDK? (2)
    【译】What is the NDK? (1)
    【译】Android平台上的Flex开发(3) 在桌面和移动设备上测试
  • 原文地址:https://www.cnblogs.com/husiyu/p/14822021.html
Copyright © 2020-2023  润新知