【每日编程08】拼写单词和一年中的第几天
2022/1/24 22:04:40
本文主要是介绍【每日编程08】拼写单词和一年中的第几天,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
题目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()
作用:
- 将()内的
String
类型字符串转化为int
类型- ()内的字符串必须是数字
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
"
这篇关于【每日编程08】拼写单词和一年中的第几天的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)
- 2024-05-31全网首发!软考2024年5月《软件设计师》真题+解析+答案!(21-30题)
- 2024-05-30【Java】百万数据excel导出功能如何实现
- 2024-05-30我们小公司,哪像华为一样,用得上IPD(集成产品开发)?
- 2024-05-30java excel上传--poi
- 2024-05-30安装笔记本应用商店的pycharm,再安排pandas等模块,说是没有打包工具?
- 2024-05-29java11新特性