zoukankan      html  css  js  c++  java
  • 记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++要快一点)

  • 相关阅读:
    一次完整的HTTP事务的过程
    移动端事件
    canvas 在视频中的用法
    理解Vue
    改变console.log的输出样式
    百度下拉搜索案例
    Vue总结
    字符串、正则
    .Net Mvc框架知识点
    Lowest Common Ancestor of a Binary Tree -- LeetCode
  • 原文地址:https://www.cnblogs.com/husiyu/p/14822021.html
Copyright © 2011-2022 走看看