A.每日一题——3606. 优惠券校验器

题目链接:3606. 优惠券校验器(简单)

算法原理:

解法:模拟

击败47.54%

时间复杂度O(Nlogn)

这题的思路非常简单,但是实现起来比较麻烦,感觉应该算个中等题,主要就是考察排序

记忆👇

  1. 字符串比:compareTo ✅

什么词序、字典序、名称排序都用它

  1. 数字比:用包装类的 compare ✅

Integer.compare(a, b)、Double.compare(a, b)

  1. 其他基本类型:直接相减 ✅

char1 - char2、int1 - int2(小数值可用)

Java代码:

java 复制代码
class Solution {
    public List<String> validateCoupons(String[] c, String[] b, boolean[] isActive) {
        int n=c.length;
        List<String> ret=new ArrayList<>();
        String[][] tmp=new String[n][2];
        for(int i=0;i<n;i++){
            if(isc(c[i])&&isb(b[i])&&isActive[i]){
                tmp[i][0]=c[i];
                tmp[i][1]=b[i];
            }else{
                //标记为无效记录,防止空指针报错
                tmp[i][0]="";
                tmp[i][1]="";
            }
        }
        Arrays.sort(tmp,(x,y)->{
            //处理空记录:空记录排在最后
            if(x[0].equals("")&&y[0].equals("")) return 0;
            if(x[0].equals("")) return 1;//x为空,x在后面
            if(y[0].equals("")) return -1;//y为空,x在前面
            //先比较品牌首字符
            int tmpret=Character.compare(x[1].charAt(0),y[1].charAt(0));
            if(tmpret!=0) return tmpret;
            //品牌首字母相同,再比较代码
            return x[0].compareTo(y[0]);
        });
        for(String[] t:tmp){
            if(t[0].equals("")) continue;
            ret.add(t[0]);
        }
        return ret;
    }
    private boolean isc(String s){
        for(char c:s.toCharArray()){
            if(!(c>='a'&&c<='z')&&!(c>='A'&&c<='Z')
                &&!(c>='0'&&c<='9')&&!(c=='_')) 
            return false;
        }
        return true;
    }
    private boolean isb(String s){
        return (s.equals("electronics")||s.equals("grocery")||s.equals("pharmacy")||s.equals("restaurant"));
    }
}
相关推荐
Flynn Liang4 分钟前
Spring AI 2.0 深度解析:ChatClient、Advisor 链与 MCP——Java 工程师的 AI 落地最优解
java·人工智能·spring·大模型·架构设计·spring ai
灿飞11 分钟前
Kotlin与Java虚拟机六:基础与类型系统:一切皆对象,但对象有代价
java·kotlin
计算机毕设定制辅导-无忧学长20 分钟前
《基于微信小程序健康习惯激励系统设计与实现》
java·spring boot·mysql·微信小程序·uniapp·健康习惯激励系统
揽星河..26 分钟前
【C语言】指针
c语言·开发语言
小郎君65828 分钟前
Vue 多标签页的加载态设计:为什么我没有用 Suspense 实现 PageLoading
vue.js·算法
小小数媒成员43 分钟前
UGUI原理(一)
开发语言·游戏·unity·游戏引擎
JJJennie7771 小时前
MAI Gateway私有化部署全攻略:大模型网关如何接入?附架构图
算法·gateway·ai网关·魔芋ai
速易达网络1 小时前
Three.js 动画入门教学:从场景搭建到流畅动效
开发语言·javascript·ecmascript
東隅已逝,桑榆非晚1 小时前
算法3.双指针法-快乐数
c++·笔记·学习·算法
福大大架构师每日一题1 小时前
excelize v2.11.1发布:Go 1.26.0起步,16项安全修复与嵌入对象能力全面升级
开发语言·安全·golang