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;
    }
}

题目来源: https://leetcode.com/problems/ransom-note/

原文地址:https://www.cnblogs.com/cc11001100/p/5997940.html