15. 赎金信

383. 赎金信

给你两个字符串:ransomNotemagazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。

如果可以,返回 true ;否则返回 false

magazine 中的每个字符只能在 ransomNote 中使用一次。

 

示例 1:

输入:ransomNote = "a", magazine = "b"
输出:false

示例 2:

输入:ransomNote = "aa", magazine = "ab"
输出:false

示例 3:

输入:ransomNote = "aa", magazine = "aab"
输出:true

 

提示:

  • 1 <= ransomNote.length, magazine.length <= 105
  • ransomNotemagazine 由小写英文字母组成
 1 class Solution {
 2     public boolean canConstruct(String ransomNote, String magazine) {
 3         int[] arr = new int[26];
 4         int temp;
 5         // 将magazine中所有字符存储,并记录次数。索引0-25分别代表26个小写英文字母
 6         for (int i = 0;i < magazine.length();i++){
 7             temp = magazine.charAt(i) - 'a';
 8             arr[temp]++;
 9         }
10         // 将ransomNote中所有数据依次用arr中存储的数据来写入,若数量不够或无此字母则判false
11         for (int i = 0;i < ransomNote.length();i++){
12             temp = ransomNote.charAt(i) - 'a';
13             if (arr[temp] > 0){
14                 arr[temp]--;
15             } else {
16                 return false;
17             }
18         }
19         return true;
20     }
21 }

关键点:1.temp = magazine.charAt(i) - 'a';将字母减去'a'可以获得该字母的下标序号(即对应索引的字母)

    2.arr[temp]++;记录字母次(个)数

 

posted on 2022-06-18 09:29  HHHuskie  阅读(59)  评论(0编辑  收藏  举报

导航