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

在家做私房菜的网站营销策划36计

在家做私房菜的网站,营销策划36计,郑州最近凶杀事件,wordpress 漂亮主题给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。 字母异位词 是由重新排列源单词的所有字母得到的一个新单词。 示例 1: 输入: strs ["eat", "tea", "tan", "ate", "nat", …

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

字母异位词 是由重新排列源单词的所有字母得到的一个新单词。

示例 1:

输入: strs = ["eat", "tea", "tan", "ate", "nat", "bat"]
输出: [["bat"],["nat","tan"],["ate","eat","tea"]]

示例 2:

输入: strs = [""]
输出: [[""]]

示例 3:

输入: strs = ["a"]
输出: [["a"]]

提示:

  • 1 <= strs.length <= 104
  • 0 <= strs[i].length <= 100
  • strs[i] 仅包含小写字母

我的解题思路:
自定义一个hash方法,将每个字符串进行hash计算,将相同hash值的字符串存放在一个list当中。
我定义的hash方法:每个字符的转为int值,然后相乘,乘积对他们的和+1取余数。

出现错误:
在这里插入图片描述
原因:上述hash方法存在碰撞,没有有效处理碰撞的情况。
试了好几次自定义的hash方法,一直都是存在碰撞的情况。
不死磕,直接看官方题解:
官方题解1:
方法一:排序
由于互为字母异位词的两个字符串包含的字母相同,因此对两个字符串分别进行排序之后得到的字符串一定是相同的,故可以将排序之后的字符串作为哈希表的键。

class Solution {public List<List<String>> groupAnagrams(String[] strs) {Map<String, List<String>> map = new HashMap<String, List<String>>();for (String str : strs) {char[] array = str.toCharArray();Arrays.sort(array);String key = new String(array);List<String> list = map.getOrDefault(key, new ArrayList<String>());list.add(str);map.put(key, list);}return new ArrayList<List<String>>(map.values());}
}作者:力扣官方题解
链接:https://leetcode.cn/problems/group-anagrams/solutions/520469/zi-mu-yi-wei-ci-fen-zu-by-leetcode-solut-gyoc/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

方法2:
方法二:计数
由于互为字母异位词的两个字符串包含的字母相同,因此两个字符串中的相同字母出现的次数一定是相同的,故可以将每个字母出现的次数使用字符串表示,作为哈希表的键。

由于字符串只包含小写字母,因此对于每个字符串,可以使用长度为 26的数组记录每个字母出现的次数。需要注意的是,在使用数组作为哈希表的键时,不同语言的支持程度不同,因此不同语言的实现方式也不同。

class Solution {public List<List<String>> groupAnagrams(String[] strs) {Map<String, List<String>> map = new HashMap<String, List<String>>();for (String str : strs) {int[] counts = new int[26];int length = str.length();for (int i = 0; i < length; i++) {counts[str.charAt(i) - 'a']++;}// 将每个出现次数大于 0 的字母和出现次数按顺序拼接成字符串,作为哈希表的键StringBuffer sb = new StringBuffer();for (int i = 0; i < 26; i++) {if (counts[i] != 0) {sb.append((char) ('a' + i));sb.append(counts[i]);}}String key = sb.toString();List<String> list = map.getOrDefault(key, new ArrayList<String>());list.add(str);map.put(key, list);}return new ArrayList<List<String>>(map.values());}
}作者:力扣官方题解
链接:https://leetcode.cn/problems/group-anagrams/solutions/520469/zi-mu-yi-wei-ci-fen-zu-by-leetcode-solut-gyoc/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

自我总结:
对于hash类题目,还是尽量不要自己创建hash方法去计算hash值,你以为的独一无二的hash方法,总能被测试用力暴捶。尽量从题目描述中去找到一些独特之处作为hashmap的键。例如这一次使用排序后的字符串,或者每个字符出现的次数都可以作为键。

如何在函数方法上新建对象?
直接和新建对象一样的方法:new
在这里插入图片描述

HashMap的contain方法有哪些。
containsKey(),containsValue()

如何收集HashMap的所有value值作为一个集合返回。

new ArrayList<T>(map.values()) // T与map的value类型要统一

HashMap根据键取值的方法.

map.get(key)

List list = new List();错误的定义集合方法,因为List是一个接口,不能有实现类。

List集合修改某个位置的值

list.set(index,newValue);

字符串转为字符数组的方法

char[] charArray = str.toCharArray();
http://www.ds6.com.cn/news/65888.html

相关文章:

  • jsp是否可以做网站手机百度云电脑版入口
  • 新注册公司网站免费怎么做百度关键词工具入口
  • 企业网站制作是什么学seo的培训学校
  • 做网站服务器的配置2023年4 5月份疫情结束吗
  • dw个人网站制作广州seo关键词优化外包
  • 小程序 微网站seo搜索引擎优化排名哪家更专业
  • 怎么用自己电脑做服务器搭建网站其中包括
  • 景洪服装网站建设宁波超值关键词优化
  • 创新驱动发展战略的内容seo刷网站
  • 邢台做网站google play官网
  • 一个人做网站 知乎谷歌自然排名优化
  • 绵阳哪里可以做网站的地方百度推广管理平台登录
  • 饰品网站设计方案河南新站关键词排名优化外包
  • google关键词排名产品seo基础优化
  • 服务器做网站FTP必要性大吗制作网站要花多少钱
  • 陶瓷 中企动力 网站建设常见的网站推广方式
  • 重庆 网站 建设软文推广策划方案
  • 新手做站必看 手把手教你做网站seo公司资源
  • 女生做网站主题有哪些营销网站做的好的公司
  • 私人建设网站营销策划与运营公司
  • 网站开发一般要用到哪些软件外贸网站推广seo
  • 怎样把自己做的网页放在网站里游戏推广引流
  • 微信小程序如何推广高级seo是什么职位
  • 光明网站建设百度下载软件
  • phpcms v9 网站建设设计制作网络科技模板核心关键词
  • 天河网站建设企业百度指数怎么做
  • 现在找个网站这么难的吗免费广告推广软件
  • 旅游网站设计规划书hs网站推广
  • 阿里巴巴网站图片怎么做百度seo怎么做
  • 怎么做qq刷会员的网站建设一个网站的具体步骤