3606. Coupon Code Validator
思路分析
代码实现
import java.util.*;
class Solution {
private static class ValidCoupon {
String code;
String businessLine;
int priority;
public ValidCoupon(String code, String businessLine, int priority) {
this.code = code;
this.businessLine = businessLine;
this.priority = priority;
}
}
public List<String> findValidCoupons(String[] code, String[] businessLine, boolean[] isActive) {
List<ValidCoupon> validList = new ArrayList<>();
int n = code.length;
for (int i = 0; i < n; i++) {
if (!isActive[i]) continue;
int priority = getBusinessPriority(businessLine[i]);
if (priority == -1) continue;
if (isValidCode(code[i])) {
validList.add(new ValidCoupon(code[i], businessLine[i], priority));
}
}
Collections.sort(validList, (a, b) -> {
if (a.priority != b.priority) {
return a.priority - b.priority;
} else {
return a.code.compareTo(b.code);
}
});
List<String> result = new ArrayList<>();
for (ValidCoupon coupon : validList) {
result.add(coupon.code);
}
return result;
}
private int getBusinessPriority(String s) {
switch (s) {
case "electronics": return 0;
case "grocery": return 1;
case "pharmacy": return 2;
case "restaurant": return 3;
default: return -1;
}
}
private boolean isValidCode(String s) {
if (s == null || s.length() == 0) return false;
for (char c : s.toCharArray()) {
boolean isAlpha = (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z');
boolean isDigit = (c >= '0' && c <= '9');
boolean isUnderscore = (c == '_');
if (!isAlpha && !isDigit && !isUnderscore) {
return false;
}
}
return true;
}
}
同类题型
视频讲解
💬 评论