ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

【每日编程08】拼写单词和一年中的第几天

2022-01-24 22:01:02  阅读:171  来源: 互联网

标签:word charAt 第几天 int 08 编程 String getOrDefault wordMap


题目1: 拼写单词

在这里插入图片描述
在这里插入图片描述

解题思路:
使用哈希表存储chars中每个字母的数量
再使用一个哈希表存储word中每个字母的数量
将这两个哈希表的键值对逐一进行比较

//先来一个比较通俗易懂的代码
class Solution{
    public int countCharacters(String[] words, String chars){
        Map<Character, Integer> charsMap = new HashMap<>();
        int charsLength = chars.length();
        for (int i = 0; i < charsLength; i++){
            char c = chars.charAt(i);
            charsMap.put(c, charsMap.getOrDefault(c, 0) + 1);
        }
        int ans = 0;
        for (String word : words){
            Map<Character, Integer> wordMap = new HashMap<>();
            int wordLength = word.length();
            for (int i = 0; i < wordLength; i++){
                char c = word.charAt(i);
                wordMap.put(c, wordMap.getOrDefault(c, 0) + 1);
            }
            boolean isAns = true;
            for (int i = 0; i < wordLength; ++i){
                char c = word.charAt(i);
                if (charsMap.getOrDefault(c, 0) < wordMap.getOrDefault(c, 0)){
                    isAns = false;
                    break;
                }
            }
            if (isAns){
                ans += word.length();
            }
        }
        return ans;
    }
}
//该代码是以上代码的简写
class Solution {
    public int countCharacters(String[] words, String chars){
        Map<Character, Integer> charsMap = new HashMap<>();
        for(int i = 0; i < chars.length(); i++){
            charsMap.put(chars.charAt(i), charsMap.getOrDefault(chars.charAt(i), 0) + 1);
        }
        int ans = 0;
        for(String word : words){
            Map<Character, Integer> wordMap = new HashMap<>();
            for(int i = 0; i < word.length(); i++){
                wordMap.put(word.charAt(i), wordMap.getOrDefault(word.charAt(i), 0) + 1);
            }
            boolean isAns = true;
            for(int i = 0; i < word.length(); i++){
                if(charsMap.getOrDefault(word.charAt(i), 0) < wordMap.getOrDefault(word.charAt(i), 0)){
                    isAns = false;
                    break;
                }
            }
            if(isAns){
                ans += word.length();
            }
        }
        return ans;
    }
}

以上代码和【每日编程07】有异曲同工之妙, 并且同时运用到了getOrDefault()方法


题目2: 一年中的第几天

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

解题思路:
1.使用substring根据字符串的特点拆分出年月日
2.判断是否是闰年

闰年: 能整除400或者能整除4却不能整除100

class Solution {
    public int dayOfYear(String date) {
        int year = Integer.parseInt(date.substring(0, 4));
        int month = Integer.parseInt(date.substring(5, 7));
        int day = Integer.parseInt(date.substring(8));
        int[] monthArray = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
        if((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0)){
            monthArray[1] = 29;
        }
        int sum = 0;
        for(int i = 0; i < month - 1; i++){
            sum += monthArray[i];
        }
        sum += day;
        return sum;
    }
}

Integer.parseInt()作用:

  1. 将()内的String类型字符串转化为int类型
  2. ()内的字符串必须是数字

substring用法:
date = "2022-01-24"
date.substring(0, 4): 从下标为0的位置开始截取到下标为4的位置(不包括下标为4的值), 即结果为"2022";
date.substring(5, 7):从下标为5的位置开始截取到下标为7的位置(不包括下标为7的值), 即结果为"01";
date.substring(8):从下标为8的位置开始截取到最后的值, 即结果为"24"

标签:word,charAt,第几天,int,08,编程,String,getOrDefault,wordMap
来源: https://blog.csdn.net/LX__dream/article/details/122672748

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有