Leetcode记录库解题方法篇之一:计数法

Python 爬虫实战:力扣(LeetCode)用户提交记录分析(含解题效率与语言偏好) 力扣(LeetCode) 是一个全球知名的在线编程学习平台,用户可以在这里解决各种编程问题,提升自己的编程能力。通过分析用户的提交记录,可以了解用户的解题效率、语言偏好等信息,这对于个人学习进度的跟踪、教学研究以及团队管理等都有很大的帮助。 阅读详情

简介

六、字符串

结论

一些很主观的东西,归根到底可能还是自己的实力不够:

计数法类似于计数排序以及哈希表的思想,一般用于有关字符的问题中,不使用字符的索引作为某个字符的标志,而是使用字符本身的ASCII码值作为暂存数组的索引。

1 242. 有效的字母异位词

题目

思路描述

  • 使用HashMap的思想
  • 遍历第一个字符串记录每一个字符的出现次数,然后遍历第二个字符串的过程中减少字符的次数,最后查看所有字符的出现次数是不是归零了。
  • 时间复杂度O(n),空间O(1)

代码实现
java代码:

class Solution {
    public boolean isAnagram(String s, String t) {
        int[] ch = new int[26];
        for(int c : s.toCharArray()){
            ch[c - 'a']++;
        }
        for(int c : t.toCharArray()){
            ch[c - 'a']--;
        }
        for(int i : ch){
            if(i != 0) return false;
        }

        return true;
    }
}

注意事项

  1. 注意事项

拓展延伸

  1. 拓展延伸

2 409. 最长回文串

题目

思路描述

  • 没用什么思想
  • 时间复杂度O(n),空间O(1)

代码实现
java代码:

class Solution {
    public int longestPalindrome(String s) {
        int[] ch = new int[58]; // 48 -> 0, 65 -> A, 97 -> a, 122 -> z
        int len = 0;
        for(char c: s.toCharArray()){
            ch[c - 'A']++;
        }

        for(int i: ch){
            if(i % 2 == 0) len += i; // 字符个数是偶数的来者不拒全都要
            if(i % 2 == 1) {
                len += i - 1; // 字符个数为奇数的,减去一变成偶数全都收下
            }
        }
        if(len < s.length()) len++; // 如果最后还小于s的长度时,随便再取一个放到正中间
        
        return len;
    }
}

注意事项

  1. 注意事项

拓展延伸

  1. 拓展延伸

3 205. 同构字符串

题目

思路描述

  • 对于一个字符串我们用它的字符j作为数组索引,然后只记录它上次出现的位置,进行遍历字符串对比。
  • 时间复杂度O(n),空间O(1)

代码实现
java代码:

class Solution {
    public boolean isIsomorphic(String s, String t) {
        int[] sc = new int[256];
        int[] tc = new int[256];

        for(int i = 0; i < s.length(); i++){
            if(sc[s.charAt(i)] == tc[t.charAt(i)]){
                sc[s.charAt(i)] = i + 1;
                tc[t.charAt(i)] = i + 1;
            } else {
                return false;
            }
        }

        return true;
    }
}

注意事项

  1. 注意事项

拓展延伸

  1. 拓展延伸

3 76. 最小覆盖子串

题目

思路描述

  • 双指针,滑动窗口,计数法
  • 时间复杂度O(n),空间复杂度O(1)

代码实现
java代码:

class Solution {
    public String minWindow(String s, String t) {
        // 双指针?滑动窗口
        int sn = s.length(), tn = t.length();
        if (sn < tn) {
            return "";
        }

        int[] charArr = new int[128];
        int cnt = tn; // t中的字母个数
        for (int i = 0; i < tn; i++) {
            charArr[t.charAt(i)]++; // 对应的字母位置计数,计数法
        }

        int l = 0, r = 0, ansL = 0, ansR = 0, min = sn + 1; // min是窗口大小,最初给一个较大的值
        while (r < sn) {
            while (r < sn && cnt != 0) {
                if (charArr[s.charAt(r)] > 0) {
                    cnt--; // 没有被覆盖的字母个数减一
                }
                charArr[s.charAt(r)]--; // 字母计数减一
                r++; // 指针右移,注意在不满足循环条件时 r 已经指向下一个位置了
            }

            if (r == sn && cnt != 0 && min == sn + 1) { // 如果r == sn 了,但是cnt还没有清空,而且也并没有进行过缩减窗口的操作,说明t中有s中没有的字母
                return "";
            }

            while (l < r && cnt == 0) { // 缩减窗口
                if (charArr[s.charAt(l)] < 0) {
                    charArr[s.charAt(l)]++;
                    l++;
                } else {
                    if (min > r - l) { // 记录新的满足要求的窗口大小
                        ansL = l;
                        ansR = r;
                        min = r - l;
                    }
                    charArr[s.charAt(l)]++; // 对应的字母位置重新计数
                    l++;
                    cnt++;
                }
            }
        }

        return s.substring(ansL, ansR);
    }
}

注意事项

  1. 注意事项

拓展延伸

  1. a
力扣刷题实践:C++解题技巧与项目记录 力扣(LeetCode)是一个在线编程平台,为广大程序员提供了海量的编程题目,致力于帮助他们提升算法和编程能力,特别是为那些准备技术面试的人士提供了实用的学习资源。该平台不仅涵盖了从基础到高级的各类算法题,还设计了模拟面试的功能,通过与真实面试相似的题目和环境,让求职者在实战中锻炼自己。此外,力扣还提供了讨论区,让程序员们可以相互交流思路、算法和解决方案,促进了知识的共享与技术的交流。 阅读详情

相关推荐

LeetCode每日解题实战记录

LeetCode是全球知名的在线编程平台,提供了一个广泛的编程练习题库,适合不同水平的开发者使用。本章将为您介绍LeetCode的基本功能、题库结构及如何高效利用该平台进行技能提升。在编程技术的学习过程中,面对难题时的反思与总结是技术成长的关键节点。它不仅要求我们对遇到的问题进行深入思考,更要学会从失败中吸取教训。例如,面对一个算法题目,如果在初次尝试中未能顺利解决,我们应该首先分析自己的解题思路是否有误,代码中是否存在逻辑错误或者效率问题。

weixin_36184718的博客 790

leetcode数组的相对排序--计数排序算法

题目: 计数排序法:以空间提升时间 借助辅助数组来计数,一是记录下数组二的数在数组一中对应出现的次数,即频度;二是记录下数组一除了数组二的数以外其他数按序排序的结果。 遍历数组二,从辅助数组对应下标下取出对应频度个数字加入结果数组,完成这一遍遍历后,顺序输出辅助数组的非0值对应的下标,即完成排序。 代码分析 小tips:新建辅助数组时,题目提示arr2.length <= 1000,但是不用建1001个数组空间,我们可以遍历数组1得出其最大值,新建(upper+1)个即可

baidu_37588698的博客 287

Win11任务栏图标消失?快速恢复指南

任务栏图标消失是Windows 11操作系统中常见的问题之一,但通过上述方法,用户通常可以轻松解决这一问题。无论是重启Windows资源管理器、使用命令提示符修复、检查系统更新和设置,还是考虑重装系统,都可以帮助用户恢复任务栏图标的正常显示。希望本文的介绍能对用户有所帮助,让Windows 11的使用更加顺畅和愉快。

mmoo_python的博客 5410

LeetCode 算法基础之计数法(C++)

LeetCode 算法基础之计数法(C++)目录1748.唯一元素的和题目描述原题链接思路点拨源码解析387.字符串中第一个唯一字符题目描述原题链接思路点拨源码解析1941.检测是否所有字符出现的次数相同题目描述原题链接思路点拨源码解析448.找到所有数组中消失的数字题目描述原题链接思路点拨源码解析1512.好数对的数目题目描述原题链接思路点拨源码解析 目录 1748.唯一元素的和 题目描述 原题链接 唯一元素的和 思路点拨 nums数组中每个元素的值都在[1,100]中,因此我们可以创建一个大小为10

qq_52324409的博客 844

爆改YOLOv8 | PSA注意力机制融合入YOLOv8

yolov8,PSA注意力,即插即用

weixin_43986124的博客 2497

雷达回波仿真

文章目录前言一、基础理解1.慢时间维度和快时间维度2.脉冲压缩3.MTI4. 脉冲多普勒处理5.cacfar检测二、具体流程1.产生回波信息加入目标时延以及噪声2.解调回波得到基带信号3.脉冲压缩 MTI MTD cafar检测 前言 雷达算法仿真学习,主要流程包括生成目标回波,将基带信号加在载波上其次是加上目标信息和干扰信号后发射,解调回波信号得到基带信号然后MTI,MTD,最后再检测。 一、基础理解 1.慢时间维度和快时间维度 连续M个脉冲回波经过相干解调之后的基带数据形成的一个二维数据矩阵,.

qq_42961235的博客 1万+

LeetCode 1067. 范围内的数字计数

文章目录1. 题目2. 解题 1. 题目 给定一个在 0 到 9 之间的整数 d,和两个正整数 low 和 high 分别作为上下界。 返回 d 在 low 和 high 之间的整数中出现的次数,包括边界 low 和 high。 示例 1: 输入:d = 1, low = 1, high = 13 输出:6 解释: 数字 d=1 在 1,10,11,12,13 中出现 6 次。 注意 d=1 在数字 11 中出现两次。 示例 2: 输入:d = 3, low = 100, high = 250 输出:3

Michael是个半路程序员 1544

STM32F407+LWIP实战:手把手教你移植mbedtls库实现Modbus TCP双向认证

本文详细介绍了如何在STM32F407微控制器上移植mbedtls库,结合LWIP协议栈实现Modbus TCP的双向认证功能。通过TLS 1.2加密通道,有效提升工业物联网通信的数据安全性,涵盖证书管理、内存优化及性能调优等关键步骤,为嵌入式系统开发者提供了一套完整的解决方案。

weixin_28721917的博客 516

leetCode (1,计数型题目)

遇到以上字眼,不用多项先弄个map对象再说 1. /** * 1. 给定一个整数数组,判断是否存在重复元素。 如果存在一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。 * 示例 1: 输入: [1,2,3,1] 输出: true 示例 2: 输入: [1,2,3,4] 输出: false */ const containsDuplicate = functio

车联网开发的博客 206

麒麟 ARMv10 SP3 安装 Oracle 19c 官方文档 或 教程

在麒麟ARMv10 SP3系统上安装Oracle 19c需要特别注意架构兼容性。

qq_43032338的博客 2939

AI翻译工具自动翻译日语视频生成srt中文字幕,支持离线轻松生成任意日语视频字幕!可选择支持显卡模式和cpu模式低显存也能用

【AI离线字幕神器:日语视频一键转中文字幕】推荐一款基于Faster-Whisper的本地化字幕工具,可离线生成日语视频的中文字幕(.srt格式),支持CPU/GPU加速处理。实测1小时视频最快4-5分钟完成翻译,无需联网保护隐私。操作简单只需拖拽文件,支持批量处理音频(mp3/wav)和视频(mp4/mkv)文件,还能自定义输出格式和参数调整。特别适合需要观看无字幕日语资料的用户,堪称技术宅必备神器。下载地址附后,包含详细使用教程和参数配置说明。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1万+

Leetcode(1684)--统计一致字符串的数目

文章目录题目题解(Java) 题目 1684.统计一致字符串的数目 给你一个由不同字符组成的字符串 allowed 和一个字符串数组 words 。如果一个字符串的每一个字符都在 allowed 中,就称这个字符串是 一致字符串 。 请你返回 words 数组中 一致字符串 的数目。 示例 1: 输入:allowed = "ab", words = ["ad","bd","aaab","baa","badab"] 输出:2 解释:字符串 "aaab" 和 "baa" 都是一致字符串,因为它们只包含字符 'a

叶卡捷琳堡的博客 352

使用静态库在嵌入式系统中进行开发

静态库是一种包含预编译对象代码的文件,它可以与应用程序链接在一起,并在编译时将库的代码复制到最终的可执行文件中。静态库是包含预编译对象代码的文件,可以与应用程序链接在一起,并在编译时将库的代码复制到最终的可执行文件中。需要注意的是,由于嵌入式系统的资源限制,开发人员应该仔细选择需要包含在静态库中的功能,并避免引入不必要的依赖关系。需要注意的是,由于嵌入式系统的资源限制,开发人员应该仔细选择需要包含在静态库中的功能,并避免引入不必要的依赖关系。的静态库文件,可以在嵌入式系统的应用程序中使用它了。

ZrElixir的博客 203

LeetCode解题汇总目录

此篇为学习完《数据结构与算法之美》后,在LeetCode刷题的汇总目录,方便大家查找(Ctrl+Find),一起刷题,一起PK交流!如果本文对你有帮助,可以给我点赞加油! Updated on 2022.6.12刷题可以按照不同的专题进行,便于加强某个知识点的理解。另有《剑指Offer》面试题(更新完毕)、《程序员面试金典》面试题(更新完毕)、LintCode代码能力测试CAT。LeetCode MySQL 数据库解题目录点击访问 我的 LeetCode 主页我的 GitHub 主页注:本文超过字数限制,

Michael是个半路程序员 8万+

Python与CAD系列基础篇(十)图形复制、移动、删除

①通过pyautocad连接AutoCAD进行处理②通过ezdxf处理dxf格式文件。进行图形复制、移动、删除的方法。pyautocad方式。pyautocad方式。

weixin_43894929的博客 2210

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

力扣(leetcode)题目总结——动态规划篇

本系列文章初衷是为了按类别整理出力扣(leetcode)最经典题目,一共100多道题,每道题都给出了非常详细的解题思路、算法步骤、代码实现。因为力扣题目顺序是随机的,并没有按照算法分类,导致同一类型的算法强化训练不够。所以本系列文章就是来帮你完成算法分类,针对每种算法做强化训练,保证让你以后遇到题目直接秒杀。本篇文章主要是针对动态规划相关的算法题,一次性帮你搞定所有动态规划题!

weixin_46571171的博客 3066

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Leetcode力扣解题记录--第49题(map)

题目描述:给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。

qq_44846784的博客 1101

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Leetcode记录库解题方法篇之二:双指针

Leetcode记录库数据结构篇之七:双指针简介七、双指针结论1 300. 最长递增子序列 简介 七、双指针 结论 一些很主观的东西,归根到底可能还是自己的实力不够: 1 300. 最长递增子序列 题目 思路描述 记忆化搜索 代码实现 java代码: 思路描述 注意事项 注意事项 拓展延伸 拓展延伸 ...

NotLency的博客 244

力扣(leetcode)题目总结——字符串篇

本系列文章初衷是为了按类别整理出力扣(leetcode)最经典题目,一共100多道题,每道题都给出了非常详细的解题思路、算法步骤、代码实现。因为力扣题目顺序是随机的,并没有按照算法分类,导致同一类型的算法强化训练不够。所以本系列文章就是来帮你完成算法分类,针对每种算法做强化训练,保证让你以后遇到题目直接秒杀。本篇文章主要是针对字符串相关的算法题,一次性帮你搞定所有字符串题!

weixin_46571171的博客 4780

掌握这15种模式后,力扣(LeetCode)不再难

在掌握这15种模式之前,力扣(LeetCode)对我来说一直很难。

硅基创想家的博客 4313

力扣刷题篇——字符串

力扣刷题篇——字符串

weixin_59796310的博客 1070

Leetcode力扣解题记录--第238题(前/后缀积)

本题要求在O(n)时间且不使用除法的情况下,计算数组中每个元素除自身外的乘积。解决方案采用前缀积和后缀积相乘的方法:首先从左到右计算每个元素左侧的乘积存入answer数组,然后从右到左计算右侧乘积并乘以前缀积。通过两次遍历即可得到结果,满足时间复杂度要求且空间复杂度为O(1)(不包括返回数组)。示例表明该方法能正确处理包含0的数组。

qq_44846784的博客 1373

LeetCode使用简介(leetcode中国-力扣)

没有入过英文版官网的坑,现在中文版官网也出来许久并且已经比较完善,题库也是通的,现在就直接使用LeetCode中国。 经过测试,到2019.11账号还是不通的,使用在中文版注册的账号密码是无法登陆英文版的,都绑定并使用github登录得到的不同的账号。能查到的18年的关于leetcode账号数据同步到leetcode中国的帖子,因为18年leetcode中国才刚刚出现还有很多不完善的地方,不太好使...

Sophia_fez的博客 1万+

【PythonCode】力扣Leetcode26~30题Python版

力扣26-30

weixin_43790276的博客 2015

leetcode解题记录-每日一题

一层循环,从头开始遍历,若当前数字为0,则将该数字和后面两个数字反转;若为1,则跳过。最后要判断结尾的两个数组是否为1。

随缘不强求,反正也求不来 1260

【PythonCode】力扣Leetcode6~10题Python版

Leetcode6-10

weixin_43790276的博客 1859
上一篇: Leetcode记录库数据结构篇之四:哈希表
下一篇: 十大排序算法总结
LencyGe
博客等级 码龄7年 26粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值