当前位置: 首页 > news >正文

leetcode刷题日记——赎金信

[ 题目描述 ]:
在这里插入图片描述
[ 思路 ]:

  • 题目要求判断 ransomNote 能不能由 magazine 里面的字符构成,并且 magazine 中的字符只能使用一次
  • 遍历 ransomNote 中的每个字符,如果其在 magazine 中能找到,则把找到的这个字符设置为不能使用,然后再去判断 ransomNote 中的下一个字符
  • 运行如下
    在这里插入图片描述
bool canConstruct(char* ransomNote, char* magazine) {
    int m_len=strlen(magazine),r_len=strlen(ransomNote);
    int* nums=(int*)malloc(sizeof(int)*m_len);
    for(int i=0;i<m_len;i++){
        nums[i]=0;
    }
    for(int i=0;i<r_len;i++){
        int j=0;
        for(j;j<m_len;j++){
            if(ransomNote[i]==magazine[j] && nums[j]==0){
                nums[j]=1;
                break;
            }
        }
        if(j==m_len) return false;
    }
    return true;
}
  • 时间复杂度O(nm),空间复杂度O(M)

[ 优化 ]:

  • 由于两个字符串都是小写英文字母组成,而字母只有26个
  • 那么可以先统计 magazine 中各个字母的个数,然后遍历 ransomNote,每使用一个字母,则对那个字母的总数-1,如果该字母剩余数<0,则说明不能构成
  • 运行如下
    在这里插入图片描述
bool canConstruct(char* ransomNote, char* magazine) {
    int m_len=strlen(magazine),r_len=strlen(ransomNote);
    int nums[26]={0};
    for(int i=0;i<m_len;i++){
        nums[magazine[i]-'a']++;
    }
    for(int i=0;i<r_len;i++){
        nums[ransomNote[i]-'a']--;
        if(nums[ransomNote[i]-'a']<0) return false;
    }
    return true;
}
  • 时间复杂度O(n),空间复杂度O(1)

[ 官方题解 ]:

  • 一、字符统计,即优化思路;时间复杂度:O(m+n),其中 m 是字符串 ransomNote 的长度,n 是字符串 magazine 的长度,我们只需要遍历两个字符一次即可。空间复杂度:O(∣S∣),S 是字符集,这道题中 S 为全部小写英语字母,因此 ∣S∣=26

相关文章:

  • 【PyTorch项目实战】反卷积(Deconvolution)
  • 解决 weditor 报错AttributeError: ‘Device‘ object has no attribute ‘address’
  • Java对象内存结构详解
  • 文献总结:AAAI2025-UniV2X-End-to-end autonomous driving through V2X cooperation
  • linux RCU技术
  • Android11车载WiFi热点默认名称及密码配置
  • 蓝桥杯嵌入式考前模块总结
  • CMake中add_custom_command用法详解
  • Kubernetes安装与集群构建详细过程
  • 【STM32标准库】--新建工程
  • redis之缓存击穿
  • JavaScript Symbol与BigInt
  • Vue.js组件安全工程化演进:从防御体系构建到安全性能融合
  • 计算机系统设计中的一些常用方法
  • 《MATLAB实战训练营:从入门到工业级应用》趣味入门篇-用MATLAB画一朵会动的3D玫瑰:从零开始的浪漫编程之旅
  • 打造海外流量矩阵,TikTok云控工具让获客更简单!
  • SpringBoot企业级开发之【用户模块-更新用户头像】
  • 1、从零搭建魔法工坊:React 19 新手村生存指南
  • ai软件UI自动化
  • 解锁语言学习新宝藏:Forvo 网站深度探秘​
  • 餐饮网站制作/网页seo是什么意思
  • 郑州优秀网站建设公司/万网域名查询
  • 阿里云服务器url做网站/韩国seocaso
  • 网站做3年/西安优化外
  • 博网站建设/网络营销平台有哪些
  • 做自媒体与做网站/微信指数官网