383. Ransom Note

来源:互联网 发布:软件许可使用证书 编辑:程序博客网 时间:2024/06/15 04:03

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") -> falsecanConstruct("aa", "ab") -> falsecanConstruct("aa", "aab") -> true

       英文水平就是有限,第一遍没有读懂,以为是求一个字符串是否包含在另一个字符串中,直接用magazine.indexOf(ransomNote)!=-1分分钟就可以出结果了,在leetcode上运行才知道自己太年轻,毕竟leetcode上不会有这么白痴的问题...

题意:

      给定一个字符串ransom和一个字符串magazine,判定ransom中的字符是否均在magazine中出现,且magazine中的字符每个只能使用一次。

解法:

      magazine中每个字符出现的次数必须大于等于ransom中字符出现的次数。因此newl两个数组来分别储存magazine、random中的次数,如果maga[i]<ran[i],返回false。

public class fuzhi {    public boolean canConsrtruct(String ransomNote,String magazine){  int[] maga=new int[26];  int[] ran=new int[26];  for(int i=0;i<magazine.length();i++){  maga[magazine.charAt(i)-'a']++;  }  for(int i=0;i<ransomNote.length();i++){  ran[ransomNote.charAt(i)-'a']++;  }  for(int i=0;i<26;i++){  if(maga[i]<ran[i]){  return false;  }  }return true;    }   public static void main(String[] args){    String ransomNote="abdhkash",magazine="aabcsakdhbs";    fuzhi r = new fuzhi();     System.out.println(r.canConsrtruct(ransomNote, magazine));    }}


0 0
原创粉丝点击