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-有效的变位词相关推荐

  1. LeetCode刷题 | 唯一摩尔斯密码词

    题目描述 国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如: "a" 对应 ".-", "b" ...

  2. 学渣的刷题之旅 leetcode刷题 28. 实现 strStr()

    实现 strStr() 函数. 给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始).如果不存在,则返 ...

  3. 5月28日刷题笔记——数组

    5月28日刷题笔记--数组 题目1:1. 两数之和(简单题) 第二次做这题了,一直用的双循环暴力枚举. 这里参考题解的哈希表方式复现代码: class Solution {public:vector& ...

  4. 力扣(LeetCode)刷题,简单+中等题(第28期)

    目录 第1题:翻转单词顺序 第2题:顺时针打印矩阵 第3题:总持续时间可被 60 整除的歌曲 第4题:字符串的最大公因子 第5题:上升下降字符串 第6题:将数组分成和相等的三个部分 第7题:可被 5 ...

  5. 【LeetCode 剑指offer刷题】树题6:28 对称二叉树(101. Symmetric Tree)

    [LeetCode & 剑指offer 刷题笔记]目录(持续更新中...) 101. Symmetric Tree /**  * Definition for a binary tree no ...

  6. 【LeetCode 剑指offer刷题】字符串题12:Valid Palindrome(回文词系列)

    [LeetCode & 剑指offer 刷题笔记]目录(持续更新中...) Valid Palindrome Given a string, determine if it is a pali ...

  7. 【LeetCode 剑指offer 刷题笔记】汇总(已完成)

    前言   不知不觉就结束了自己的秋招之路,虽感觉有些艰辛但是收获很多.找工作那段时间做了很多学习笔记,这是数据结构与算法相关的一部分笔记,这一块除了复习相关教科书,还有就是刷LeetCode和< ...

  8. C#LeetCode刷题-深度优先搜索

    深度优先搜索篇 # 题名 刷题 通过率 难度 98 验证二叉搜索树 22.2% 中等 99 恢复二叉搜索树 45.1% 困难 100 相同的树 48.1% 简单 101 对称二叉树 42.1% 简单 ...

  9. C#LeetCode刷题-排序

    排序篇 # 题名 刷题 通过率 难度 56 合并区间 31.2% 中等 57 插入区间 30.4% 困难 75 颜色分类 48.6% 中等 147 对链表进行插入排序 50.7% 中等 148 排序链 ...

最新文章

  1. 开启注册丨NeurlPS 2021论文预讲会议题全公开,4大主题和25场报告等你来
  2. localparam和parameter的区别
  3. mysql的主从复制原理
  4. 李宏毅线性代数笔记9:对角化
  5. java性能优化读书笔记(1)
  6. 最短路 poj1125
  7. 全平台硬件解码渲染方法与优化实践
  8. 【转】Ubuntu下使用sysv-rc-conf管理服务
  9. ntp-redhat 同步时间配置
  10. 腾讯视频《庆余年》再搞超前点播,网友:不是每部剧都叫《陈情令》
  11. STM32工作笔记0090---ADC基本原理-M3
  12. 运筹优化(十六)--排队论基础及其最优化求解
  13. 关于海康威视web视频插件开发,iframe、弹出页面上视频框偏移问题
  14. 尚学堂马士兵struts2 课堂笔记(二)
  15. Java项目内容中没有错,但是项目上面显示一个红叉的解决办法
  16. [论文]著名会议和期刊
  17. 离线地图开发 支持 局域网内二次开
  18. 【USACO】Team Tic Tac Toe(C题)
  19. git 多人在同一分支上迭代开发时,如何保证分支提交历史保持线性
  20. 怎么在12306上选择上中下卧铺

热门文章

  1. 【20190320】pycharm 永久破解(推荐第二种)
  2. Hackthebox网络不稳定解决方式
  3. 电路中的0欧姆电阻究竟是干什么用的?——0欧姆电阻的一些用法解释
  4. 有效抵御多种高级威胁,华为云网站安全解决方案保护数据更专业!
  5. Java支付宝支付(Alipay),支付接口,同步异步通知
  6. v3S驱动gt911触摸
  7. Java List集合进行分组
  8. ffmpeg解码ps流部分代码以及PS播放器demo
  9. 计算机系统结构层,计算机系统结构层次记忆系统.ppt
  10. set_input_delay中-add_delay的作用