383. 赎金信
题目:
思路:
【1】本质上限制了小写字母,也就是说,出现的字符最多也就26个,所以如果magazine出现的字符能组成ransomNote字符串,那么必然就是不会出现该字符的使用为负的情况,如果负了,那么就是不可能。
代码展示:
//时间1 ms 击败 99.22% //内存42.4 MB 击败 42.58% class Solution { public boolean canConstruct(String ransomNote, String magazine) { int[] charArr = new int[26]; for (char c : magazine.toCharArray()){ charArr[c - 'a']++; } for (char c : ransomNote.toCharArray()){ charArr[c - 'a']--; if (charArr[c - 'a'] < 0) return false; } return true; } } //时间0 ms 击败 100% //内存42.6 MB 击败 28.76% class Solution { public boolean canConstruct(String ransomNote, String magazine) { if(ransomNote.length() > magazine.length()){ return false; } int chars[] = new int[26]; for(int i = 0; i < ransomNote.length(); i++){ char ch = ransomNote.charAt(i); int index = magazine.indexOf(ch, chars[ch - 'a']); if(index == -1){ return false; } chars[ch - 'a'] = index + 1; } return true; } }