刷题28-有效的变位词
32-有效的变位词
解题思路:
注意变位词的条件,当两个字符串完全相等或者长度不等时,就不是变位词。
把字符串中的字符映射成整型数组,统计每个字符出现的次数
注意数组怎么初始化:
int [] s1=new int[26]
代码如下:
class Solution {public boolean isAnagram(String s, String t) {if(s.length()!=t.length()||s.equals(t)){return false;}int [] s1=new int[26];int [] t1=new int[26];int l=s.length();for(int i=0;i<l;i++){s1[s.charAt(i)-'a']++;t1[t.charAt(i)-'a']++;}for(int i=0;i<26;i++){if(s1[i]!=t1[i]){return false;}}return true;}
}
33-变位词组
解题思路:注意返回类型为List<List<String>>
,可以理解为列表中套列表
Hashmap中本来没有add
用法,Hashset中有add
用法,这里使用 map.get(s).add(str)
表示添加不重复的元素
另外关于ArrayList<>和LinkedList<>
用法:
ArrayList<>为基于数组的大小可变
LinkedList<>是基于双向链表
菜鸟教程-Java ArrayList
菜鸟教程-Java LinkedList
在本题中列表的嵌套ArrayList<>和LinkedList<>
都可以实现
代码如下:
class Solution {public List<List<String>> groupAnagrams(String[] strs) {Map<String,List<String>> map=new HashMap<>();for(String str:strs){char[] ch=str.toCharArray();//字符串转化为字符数组Arrays.sort(ch);//对字符数组进行排序String s=new String(ch);//字符数组转化为字符串if(!map.containsKey(s)){map.put(s,new ArrayList<>());//map容器中不存在s的话,创建一个s对应的列表}map.get(s).add(str);//add用法没有具体找到,不允许添加重复的元素,保证了变位词是一组}return new ArrayList<>(map.values());}
}
代码二·
class Solution {public List<List<String>> groupAnagrams(String[] strs) {Map<String,List<String>> map=new HashMap<>();for(String str:strs){char[] ch=str.toCharArray();Arrays.sort(ch);String s=new String(ch);if(!map.containsKey(s)){map.put(s,new LinkedList<>());}map.get(s).add(str);}return new LinkedList<>(map.values());}
}
34-外星语言是否排序
解题思路:判定一组单词是否也按照给定的字母表的顺序排列,只需要比较两个单词中第一个不相同的字母顺序。
首先要将字母表映射到一维整形数组中,越靠前的字母数组取值越小。
需要注意的特殊情况1.只有一个单词肯定符合要求2.当两个字母前半部分完全一样时,短的单词在前面,比如app在前,apple在后。
class Solution {public boolean isAlienSorted(String[] words, String order) {if(words.length<2) return true;int[] index=new int[order.length()];for(int i=0;i<order.length();i++){index[order.charAt(i)-'a']=i;//为字母表赋顺序,靠前的下标越小}for(int i=0;i<words.length-1;i++){int len=Math.min(words[i].length(),words[i+1].length());for(int j=0;j<len;j++){char c1=words[i].charAt(j);char c2=words[i+1].charAt(j);if(index[c1-'a']<index[c2-'a']){break;}if(index[c1-'a']>index[c2-'a']){return false;} if(j==len-1&&words[i].length()>len){//判断特殊情况,当前项单词比后项长,并且后项和前项完全重合,判定后项字典序小return false;}}}return true;}
}
刷题28-有效的变位词相关推荐
- LeetCode刷题 | 唯一摩尔斯密码词
题目描述 国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如: "a" 对应 ".-", "b" ...
- 学渣的刷题之旅 leetcode刷题 28. 实现 strStr()
实现 strStr() 函数. 给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始).如果不存在,则返 ...
- 5月28日刷题笔记——数组
5月28日刷题笔记--数组 题目1:1. 两数之和(简单题) 第二次做这题了,一直用的双循环暴力枚举. 这里参考题解的哈希表方式复现代码: class Solution {public:vector& ...
- 力扣(LeetCode)刷题,简单+中等题(第28期)
目录 第1题:翻转单词顺序 第2题:顺时针打印矩阵 第3题:总持续时间可被 60 整除的歌曲 第4题:字符串的最大公因子 第5题:上升下降字符串 第6题:将数组分成和相等的三个部分 第7题:可被 5 ...
- 【LeetCode 剑指offer刷题】树题6:28 对称二叉树(101. Symmetric Tree)
[LeetCode & 剑指offer 刷题笔记]目录(持续更新中...) 101. Symmetric Tree /** * Definition for a binary tree no ...
- 【LeetCode 剑指offer刷题】字符串题12:Valid Palindrome(回文词系列)
[LeetCode & 剑指offer 刷题笔记]目录(持续更新中...) Valid Palindrome Given a string, determine if it is a pali ...
- 【LeetCode 剑指offer 刷题笔记】汇总(已完成)
前言 不知不觉就结束了自己的秋招之路,虽感觉有些艰辛但是收获很多.找工作那段时间做了很多学习笔记,这是数据结构与算法相关的一部分笔记,这一块除了复习相关教科书,还有就是刷LeetCode和< ...
- C#LeetCode刷题-深度优先搜索
深度优先搜索篇 # 题名 刷题 通过率 难度 98 验证二叉搜索树 22.2% 中等 99 恢复二叉搜索树 45.1% 困难 100 相同的树 48.1% 简单 101 对称二叉树 42.1% 简单 ...
- C#LeetCode刷题-排序
排序篇 # 题名 刷题 通过率 难度 56 合并区间 31.2% 中等 57 插入区间 30.4% 困难 75 颜色分类 48.6% 中等 147 对链表进行插入排序 50.7% 中等 148 排序链 ...
最新文章
- 开启注册丨NeurlPS 2021论文预讲会议题全公开,4大主题和25场报告等你来
- localparam和parameter的区别
- mysql的主从复制原理
- 李宏毅线性代数笔记9:对角化
- java性能优化读书笔记(1)
- 最短路 poj1125
- 全平台硬件解码渲染方法与优化实践
- 【转】Ubuntu下使用sysv-rc-conf管理服务
- ntp-redhat 同步时间配置
- 腾讯视频《庆余年》再搞超前点播,网友:不是每部剧都叫《陈情令》
- STM32工作笔记0090---ADC基本原理-M3
- 运筹优化(十六)--排队论基础及其最优化求解
- 关于海康威视web视频插件开发,iframe、弹出页面上视频框偏移问题
- 尚学堂马士兵struts2 课堂笔记(二)
- Java项目内容中没有错,但是项目上面显示一个红叉的解决办法
- [论文]著名会议和期刊
- 离线地图开发 支持 局域网内二次开
- 【USACO】Team Tic Tac Toe(C题)
- git 多人在同一分支上迭代开发时,如何保证分支提交历史保持线性
- 怎么在12306上选择上中下卧铺
热门文章
- 【20190320】pycharm 永久破解(推荐第二种)
- Hackthebox网络不稳定解决方式
- 电路中的0欧姆电阻究竟是干什么用的?——0欧姆电阻的一些用法解释
- 有效抵御多种高级威胁,华为云网站安全解决方案保护数据更专业!
- Java支付宝支付(Alipay),支付接口,同步异步通知
- v3S驱动gt911触摸
- Java List集合进行分组
- ffmpeg解码ps流部分代码以及PS播放器demo
- 计算机系统结构层,计算机系统结构层次记忆系统.ppt
- set_input_delay中-add_delay的作用