问题描述
在一个超市里,有一个包含 nn 个格子的货物架,每个格子中放有一种商品,商品用小写字母 a 到 z 表示。当顾客进入超市时,他们会依次从第一个格子查找到第 nn 个格子,寻找自己想要购买的商品。如果在某个格子中找到该商品,顾客就会购买它并离开;如果中途遇到一个空格子,或查找完所有格子还没有找到想要的商品,顾客也会离开。
作为超市管理员,你可以在顾客到来之前重新调整商品的顺序,以便尽可能多地出售商品。当第一个顾客进入后,商品位置不能再调整。你需要计算在最优调整下,最多可以卖出多少件商品。输入变量说明: 程序 import java.util.HashMap;
public class Main { public static int solution(int n, int m, String s, String c) { // 统计每种商品的数量 HashMap<Character, Integer> countMap = new HashMap<>(); for (char ch : s.toCharArray()) { countMap.put(ch, countMap.getOrDefault(ch, 0) + 1); }
// 计算最大销售量
int maxSales = 0;
for (char ch : c.toCharArray()) {
if (countMap.containsKey(ch) && countMap.get(ch) > 0) {
maxSales++;
countMap.put(ch, countMap.get(ch) - 1);
}
}
return maxSales;
}
public static void main(String[] args) {
System.out.println(solution(3, 4, "abc", "abcd") == 3);
System.out.println(solution(4, 2, "abbc", "bb") == 2);
System.out.println(solution(5, 4, "bcdea", "abcd") == 4);
}
}