LeetCode/com/zerroi/leetcode/Three18/CanConstruct.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;
}
}