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 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; } }