60 lines
1.6 KiB
Java
60 lines
1.6 KiB
Java
|
package com.zerroi.leetcode.Three18;
|
||
|
|
||
|
import java.util.HashMap;
|
||
|
import java.util.Map;
|
||
|
|
||
|
public class CanConstruct {
|
||
|
public static void main(String[] args) {
|
||
|
SolutionFirst solutionFirst = new SolutionFirst();
|
||
|
boolean res = solutionFirst.canConstruct("aa", "aab", 1);
|
||
|
System.out.println("res = " + res);
|
||
|
|
||
|
}
|
||
|
}
|
||
|
|
||
|
class SolutionFirst {
|
||
|
public boolean canConstruct(String ransomNote, String magazine) {
|
||
|
if (magazine.length() < ransomNote.length()) return false;
|
||
|
|
||
|
Map<Character, Integer> map = new HashMap<>();
|
||
|
for (char c : magazine.toCharArray()) {
|
||
|
if (map.containsKey(c)) {
|
||
|
map.put(c, map.get(c) + 1);
|
||
|
} else {
|
||
|
map.put(c, 1);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
for (char c : ransomNote.toCharArray()) {
|
||
|
// 如果magazine中不包涵ransomNote中的某一个字符
|
||
|
if (!map.containsKey(c)) {
|
||
|
return false;
|
||
|
} else {
|
||
|
Integer i = map.get(c);
|
||
|
if (i <= 0) {
|
||
|
return false;
|
||
|
}
|
||
|
else map.put(c, i-1);
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
public boolean canConstruct(String ransomNote, String magazine, int i) {
|
||
|
char[] ransomNoteCharArray = ransomNote.toCharArray();
|
||
|
char[] magazineCharArray = magazine.toCharArray();
|
||
|
int[] count = new int[26];
|
||
|
for (char c : magazineCharArray) {
|
||
|
count[c - 'a']++;
|
||
|
}
|
||
|
|
||
|
for (char c : ransomNoteCharArray) {
|
||
|
count[c - 'a']--;
|
||
|
if (count[c - 'a'] < 0) return false;
|
||
|
}
|
||
|
|
||
|
return true;
|
||
|
}
|
||
|
}
|