Given an arbitrary ransom note string and another string containing letters from all the magazines, write a function that will return true if the ransom note can be constructed from the magazines ; otherwise, it will return false.
Each letter in the magazine string can only be used once in your ransom note.
Note:
You may assume that both strings contain only lowercase letters.
canConstruct("a", "b") -> false canConstruct("aa", "ab") -> false canConstruct("aa", "aab") -> true
class Solution { public boolean canConstruct(String ransomNote, String magazine) { if(ransomNote.length() == 0) return true; else if(magazine.length() == 0) return false; int[] arr = new int[26]; for(int i = 0; i < magazine.length(); i++) arr[magazine.charAt(i) - 'a']++; int cou = 0; for(int i = 0; i < ransomNote.length(); i++){ char c = ransomNote.charAt(i); if(arr[c - 'a'] > 0){ --arr[c-'a']; cou++; } else return false; } if(cou == ransomNote.length()) return true; return false; } }
问能否从magazine里组成ransomNote,把magazine先存到数组里,然后再遍历ransomNote,看是不是能组成就可以。
而且空字符也行,我佛辣