![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
哈希表与字符串
唯有一颗慎独心
渴望力量使我成为琦玉
展开
-
算法题里一些集合类常用的定义与方法(自用)
1.set定义:Set<Integer> set=new HashSet<>();添加元素set.add()判断是否拥有set.contains()删除元素set.remove()迭代 for (Integer i : set) { System.out.println(i); }大小set.size()2.map定义:Map<Integer,Integer> map=new HashMap原创 2021-07-24 23:19:22 · 147 阅读 · 0 评论 -
数组、set、map的定义与使用方法
1.数组创建数组:int length=10;int[] example=new int[length];循环数组:for(int i=0;i<example.length;i++){ System.out.print(example[i]);}2.set定义set,HashSet 中的元素实际上是对象,一些常见的基本类型可以使用它的包装类。HashSet<String> set = new HashSet<String>();判断Set集合原创 2021-06-01 23:35:00 · 394 阅读 · 0 评论 -
哈希专栏之两个数组的交集
题目:给定两个数组,编写一个函数来计算它们的交集。解析:采用set这种哈希结构。因为set中的元素不能重复。定义两个set。先遍历一边nums1,存入定义的其中一个set1.再遍历nums2,与set1对比,如果set1存在遍历的元素,则把该元素加入到set2.再将set2转化为数组即可。代码:class Solution { public int[] intersection(int[] nums1, int[] nums2) { HashSet<Intege原创 2021-06-01 20:31:14 · 101 阅读 · 0 评论 -
哈希表专栏之有效的字母异位词
题目:给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。解析:思路很简单。采用哈希的思想,我们知道常见的三种哈希结构,分别是数组,set,map.这里我们采用数组来作为哈希结构。记住:当遇到了要快速判断一个元素是否出现集合里的时候,就要考虑哈希法。1.定义一个数组叫做result用来上记录字符串s里字符出现的次数。2.需要把字符映射到数组上,因为字符a到字符z的ASCII是26个连续的数值,所以字符a映射为下表0,相应的字符z映射为下表25。再遍历 字符串原创 2021-06-01 19:50:11 · 95 阅读 · 0 评论 -
重复的DNA序列
题目:所有 DNA 都由一系列缩写为 ‘A’,‘C’,‘G’ 和 ‘T’ 的核苷酸组成,例如:“ACGAATTCCG”。在研究 DNA 时,识别 DNA 中的重复序列有时会对研究非常有帮助。编写一个函数来找出所有目标子串,目标子串的长度为 10,且在 DNA 字符串 s 中出现次数超过一次。解析:用哈希表。思路其实很简单,代码:class Solution { public List<String> findRepeatedDnaSequences(String s)原创 2021-03-08 10:05:33 · 321 阅读 · 2 评论 -
无重复字符的最长子串
题目:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。解析:算法思路为:代码:class Solution { public int lengthOfLongestSubstring(String s) { int begin=0; int result=0; String word=""; int[] char_map=new int[128]; for(int i=0;i&l原创 2021-03-07 22:30:06 · 61 阅读 · 0 评论 -
字母异位词分组
题目:给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。解析:我们采用哈希表的思路。首先思考:所以思路为:代码:class Solution { public List<List<String>> groupAnagrams(String[] strs) { Map<String, List<String>> ans = new HashMap<String, List<原创 2021-03-07 21:58:37 · 149 阅读 · 0 评论 -
词语模式
题目:给定一种规律 pattern 和一个字符串 str ,判断 str 是否遵循相同的规律。这里的 遵循 指完全匹配,例如, pattern 里的每个字母和字符串 str 中的每个非空单词之间存在着双向连接的对应规律。解析:采用哈希表的思路。我们先思考和分析:所以思路为:举个例子:代码:class Solution { public boolean wordPattern(String pattern, String s) { Map<String, Ch原创 2021-03-07 20:58:27 · 162 阅读 · 0 评论 -
最长回文串
题目:给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。在构造过程中,请注意区分大小写。比如 “Aa” 不能当做一个回文字符串。注意:假设字符串的长度不会超过 1010。解析:这道题很多种解法,但是我们采用哈希表的方式来解。我们先思考:具体思路为:代码:class Solution { public int longestPalindrome(String s) { int[] char_map=new int[128];原创 2021-03-07 18:51:13 · 73 阅读 · 1 评论