首页 > 编程语言 >算法-哈希表

算法-哈希表

时间:2024-02-21 13:44:08浏览次数:31  
标签:java 哈希 HashSet int 算法 length 数组 new

1. 有效字母的异位词(LeetCode 242)

题目:给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。

  • 若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。
  • s和t仅包含小写字母

思路:使用大小为26的数组存储单词中每个字母出现的次数

  • 因为题目限制了字符的范围,所以才能用数组作为表

javastr.charAt(pos)返回的是该位置上的字符

class Solution {
    public boolean isAnagram(String s, String t) {
        //字符串s和t仅包含小写字母
        int[] record = new int[26];      
        for(int i = 0; i < s.length(); ++i){
            record[s.charAt(i)-'a']++;
        }
        for(int i = 0; i < t.length(); ++i){
            record[t.charAt(i)-'a']--;
        }
        for(int i = 0; i<26; ++i){
            if(record[i] != 0)   return false;
        }
        return true;
    }
}

2. 两个数组的交集(LeetCode 349)

题目:给定两个数组 nums1 和 nums2 ,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以不考虑输出结果的顺序 。
java

  1. HashSet的常用方法:add(), contains(), remove()
  2. 字符串的长度str.length();数组的长度nums.length
  3. HashSet转为int数组的方式set.stream().mapToInt(x -> x).toArray()
import java.util.HashSet;
class Solution {
    public int[] intersection(int[] nums1, int[] nums2) {
        HashSet<Integer> record1 = new HashSet<>();
        HashSet<Integer> same = new HashSet<>();
        for(int i = 0; i<nums1.length; ++i){
            record1.add(nums1[i]);
        }
        for(int i = 0; i<nums2.length; ++i){
            if(record1.contains(nums2[i])){
                same.add(nums2[i]);
            }
        }
        //HashSet转化为数组的方式
        return same.stream().mapToInt(x -> x).toArray();
    }
}

标签:java,哈希,HashSet,int,算法,length,数组,new
From: https://www.cnblogs.com/hifrank/p/18025022

相关文章

  • 代码随想录算法训练营第二十四天|● 理论基础 ● 77. 组合
    回溯理论基础 回溯法,与递归有类似形式,本质是穷举(可能存在剪枝),效率并不高。回溯的模板:voidbacktracking(参数){if(终止条件){存放结果;return;}for(选择:本层集合中元素(树中节点孩子的数量就是集合的大小)){处理节点;......
  • 2024牛客寒假算法基础集训营4
    2024牛客寒假算法基础集训营4比赛地址A.柠檬可乐思路:简单的模拟,按照题目描述判断大小即可Code#include<bits/stdc++.h>usingnamespacestd;#defineintlonglong#defineall(x)x.begin()+1,x.end()voidsolve(){ inta,b,k; cin>>a>>b>>k; if(a>=k*b)cout<<&qu......
  • Python数据结构与算法05——插入排序 shell排序
    插入排序 definsrt_sort(aimlist):n=len(aimlist)forcurinrange(1,n):i=curwhilei>0:ifaimlist[i]<aimlist[i-1]:aimlist[i],aimlist[i-1]=aimlist[i-1],aimlist[i]i-=1e......
  • Python数据结构与算法04——栈与队列
    栈的实现:classStack(object):def__init__(self):self.__list=[]defpush(self,item):self.__list.append(item)defpop(self):returnself.__list.pop()defpeek(self):ifself.__list:returnself._......
  • Python数据结构与算法05——查找与排序
    冒泡排序:defbible_sort(aimlist):n=len(aimlist)j=len(aimlist)whilej>0:foriinrange(n-1):ifaimlist[i]>aimlist[i+1]:aimlist[i],aimlist[i+1]=aimlist[i+1],aimlist[i]n-=1j-=1r......
  • 初探富文本之文档diff算法
    初探富文本之文档diff算法当我们实现在线文档的系统时,通常需要考虑到文档的版本控制与审核能力,并且这是这是整个文档管理流程中的重要环节,那么在这个环节中通常就需要文档的diff能力,这样我们就可以知道文档的变更情况,例如文档草稿与线上文档的差异、私有化版本A与版本B之间的差异......
  • 常用字符串算法
    KMP我们考虑朴素的字符串匹配过程。voidmatch(conststring&s,conststring&p){//findpinsfor(inti=0;i<s.size();++i)for(intj=0;j<p.size()&&i+j<s.size();++j){if(s[i+j]!=p[j])break;if(......
  • 限流算法
    固定时间窗比如1秒钟限制访问100次,则用1秒作为时间窗,用个计数器,下个时间窗到了就把计数器置0;实现方式可以用一个线程定时1秒钟刷一次,但在某些系统中,可能会有很多个qps拦截器,这样会导致线程数很多,所以也可以改成记录上次时间窗的时间点,每次计数器+1之前算一下时间窗是否超过1秒了......
  • 基于yolov2深度学习网络的血细胞检测算法matlab仿真
    1.算法运行效果图预览 2.算法运行软件版本MATLAB2022a 3.算法理论概述         血细胞检测是医学图像处理领域的重要任务之一,对于疾病的诊断和治疗具有重要意义。近年来,深度学习在医学图像处理领域取得了显著成果,尤其是目标检测算法在血细胞检测方面表现出......
  • 基于huffman编解码的图像压缩算法matlab仿真
    1.算法运行效果图预览 2.算法运行软件版本matlab2022a 3.算法理论概述       Huffman编码是一种用于无损数据压缩的熵编码算法。由DavidA.Huffman在1952年提出。该算法完全依据字符出现概率来构造异字头的平均长度最短的码字,有时称之为最佳编码,一般就叫做Huffm......