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

做网站每一年都要交钱吗广州网站seo公司

做网站每一年都要交钱吗,广州网站seo公司,做网站是什么课,天元建设集团有限公司七公司给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。 字母异位词 是由重新排列源单词的所有字母得到的一个新单词。 示例 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/27064.html

相关文章:

  • 哔哩哔哩网页版下载视频优化营商环境发言稿
  • 房产网网站seo入门基础教程
  • 微信网站开发需要什么技术seo推广策划
  • 资讯网站开发需求网站关键词排名优化推广软件
  • 哈尔滨住建局网站首页西安网站关键词推广
  • 网站建设课程感想公众号如何推广
  • 网站百度百科怎么做什么叫软文推广
  • 做外贸网站如果是东西杂会不会不好推广小程序开发框架
  • 重庆承越网站建设公司结构优化
  • 成都网站建设公司电话营销网络怎么写
  • c2c网站的特点及主要功能淘宝运营培训班哪里有
  • 培训网站建设方案广告素材
  • 分类信息网站开发免费的外链平台
  • jsp网站开发介绍泾县网站seo优化排名
  • 国外网站做问卷搜索竞价
  • 门户网站制作费用网络营销有什么岗位
  • 广告传媒公司网站怎么做北京seo执行
  • 做彩票网站被捉将受到什么惩罚百度网盘下载安装
  • 企业网站开发背景则么写阿里巴巴国际站运营
  • 开发app需要多少人seo课堂
  • 做营养的网站下载地图导航手机版免流量费用
  • 大兴高端网站建设百度搜索下载安装
  • 万网没备案怎么做网站seo高级优化技巧
  • 网站建设方维全网营销系统怎么样
  • spring boot做网站销售外包
  • 网站建设系统网络营销收获与体会
  • 织梦做的网站在手机上显示深圳seo网站优化公司
  • 班级app网站建设网络营销网站建设
  • 兰州网站建设推广百度图片识别搜索引擎
  • 室内设计师招聘简章宁波seo排名费用