LeetCode之383. Ransom Note
--------------------------------------------
思路就是进行频率统计。
统计一下第二个字符串字符出现次数++
统计一下第一个字符串中字符出现次数--
如果出现负数说明第二个中的字符不够用的。
AC代码如下:
public class Solution { public boolean canConstruct(String ransomNote, String magazine) { int book[]=new int[26]; for(int i=0;i<magazine.length();i++) book[magazine.charAt(i)-'a']++; for(int i=0;i<ransomNote.length();i++) book[ransomNote.charAt(i)-'a']--; for(int i=0;i<book.length;i++) if(book[i]<0) return false; return true; } }
改进的AC代码(节省了一个for循环):
public class Solution { public boolean canConstruct(String ransomNote, String magazine) { int book[]=new int[26]; for(int i=0;i<magazine.length();i++) book[magazine.charAt(i)-'a']++; for(int i=0;i<ransomNote.length();i++) if(--book[ransomNote.charAt(i)-'a']<0) return false; return true; } }
或者:
统计一下第一个的字符出现次数++;
统计一下第二个字符出现次数--
如果出现正数说明第一个没减完呗
AC代码:
public class Solution { public boolean canConstruct(String ransomNote, String magazine) { int book[]=new int[26]; for(int i=0;i<ransomNote.length();i++) book[ransomNote.charAt(i)-'a']++; for(int i=0;i<magazine.length();i++) book[magazine.charAt(i)-'a']--; for(int i=0;i<book.length;i++) if(book[i]>0) return false; return true; } }