383. ransom note 解答

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

解答

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
public class Solution {
public boolean canConstruct(String ransomNote, String magazine) {
if(ransomNote.equals("")){
return true;
}
String[] mag = magazine.split("");
String[] ran = ransomNote.split("");
ArrayList<String> m = new ArrayList<String>();
for(String i:mag){
m.add(i);
}
boolean res = true;
for(String i:ran){
boolean temp = false;
for(int j = 0;j<m.size();j++){
if(i.equals(m.get(j))){
temp = true;
m.remove(j);
break;
}
}
if(!temp){
res = false;
break;
}
}
return res;
}
}