【LeetCode】第32天 - 383. 赎金信

x33g5p2x  于2021-12-06 转载在 其他  
字(0.7k)|赞(0)|评价(0)|浏览(267)

题目描述

解题思路

这道题就是判断判断 ransomNote 能不能由 magazines 里面的字符构成。如果可以构成,返回 true ;否则返回 false 。magazine 中的每个字符只能在 ransomNote 中使用一次。

  • 首先我们可以遍历magazine,统计magazine中各字符出现的次数,并用数组count存储起来。
  • 然后再遍历ransomNote ,将ransomNote[i]在magazine中出现的次数减1,当次数小于0时,说明magazine中不包含该字符,即ransomNote 不能由 magazines 里面的字符构成。

代码实现

  1. class Solution {
  2. public boolean canConstruct(String ransomNote, String magazine) {
  3. if(magazine.length()<ransomNote.length()){ //magazine 的长度小于ransomNote的长度,一定不满足
  4. return false;
  5. }
  6. int[] count = new int[26];
  7. for(int i=0;i<magazine.length();i++){ //统计magazine中各字符出现的次数
  8. ++count[magazine.charAt(i) - 'a'];
  9. }
  10. for(int i=0;i<ransomNote.length();i++){
  11. --count[ransomNote.charAt(i) - 'a']; //将该字符在magazine中出现的次数减1
  12. if(count[ransomNote.charAt(i) - 'a']<0){ //如果次数小于0,不满足返回false
  13. return false;
  14. }
  15. }
  16. return true;
  17. }
  18. }

相关文章