383. Ransom Note
2017-02-23 12:10
211 查看
Problem:
Solution:
开始时我误解了这道题的意思,我以为是关于字符串匹配的一道题,后来发现并非如此,题目的原意是“一个劫匪索要赎金,但为了防止身份被发现需要从杂志中剪下相应字母拼起来”,实质上就是判断ransomNote数组中的某个元素个数是否小于或等于magazine数组中对应元素的个数。我想到的一个方法就是创建辅助数组统计给定数组中每个元素的个数,然后相比较,若ransomNote数组中的某个元素个数大于magazine数组中对应元素的个数则返回false,否则返回trueEdition1:
class Solution { public: bool canConstruct(string ransomNote, string magazine) { int store1[26] = {0}; int store2[26] = {0}; m = ransomNote.size(); int n = magazine.size(); for (int i = 0;i < m;i++) { int temp = ransomNote[i] - 'a'; store1[temp]++; } for (int i = 0;i < n;i++) { int temp = magazine[i] - 'a'; store2[temp]++; } for (int i = 0;i < 26;i++) { if (store1[i] > store2[i]) return false; } return true; } };看到网上还有另外一种比较简单的算法,创建一个辅助数组即可,最后也不用再进行比较,直接判断数组对应位置的值是否小于0,如果小于0则说明magazine中的对应字符个数小于ransomNote中的,返回false。
Edition2:
public boolean canConstruct(String ransomNote, String magazine) { int[] arr = new int[26]; for (int i = 0; i < magazine.length(); i++) { arr[magazine.charAt(i) - 'a']++; } for (int i = 0; i < ransomNote.length(); i++) { if(--arr[ransomNote.charAt(i)-'a'] < 0) { return false; } } return true; }
相关文章推荐
- 383. Ransom Note
- 383. Ransom Note
- LeetCode笔记:383. Ransom Note
- 【leetcode】383. Ransom Note 恐吓信
- LeetCode_383. Ransom Note
- leecode 解题总结:383. Ransom Note
- LeetCode-Easy部分中标签为String 383. Ransom Note
- 383. Ransom Note
- leetcode 383. Ransom Note
- LeetCode 383. Ransom Note 自己的解法
- 383. Ransom Note
- 383. Ransom Note
- LeetCode之383. Ransom Note
- leetcode(85).383. Ransom Note
- 383. Ransom Note
- LeetCode-383. Ransom Note
- leetcode_383. Ransom Note-近似子串问题
- 383. Ransom Note
- 383. Ransom Note
- 383. Ransom Note(C语言)