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
My solution:
public class Solution {
public boolean canConstruct(String ransomNote, String magazine) {
boolean flag=true;
int len_r=ransomNote.length();
int len_m=magazine.length();
int[] data=new int[26];
for(int i=0;i<len_r;++i){
int index=ransomNote.charAt(i)-97;
data[index]++;
}
for(int i=0;i<len_m;++i){
int index=magazine.charAt(i)-97;
if(data[index]!=0){
data[index]--;
}
}
for(int i=0;i<26;++i){
if(data[i]>0){
flag=false;
break;
}
}
return flag;
}
}