博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode刷题242 有效的字母异位词Valid Anagram(简单) Python Java
阅读量:4128 次
发布时间:2019-05-25

本文共 2306 字,大约阅读时间需要 7 分钟。

题目大意

给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的一个字母异位词。

示例 1:

输入: s = "anagram", t = "nagaram"

输出: true

示例 2:

输入: s = "rat", t = "car"

输出: false

说明:

你可以假设字符串只包含小写字母。

进阶:

如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况?

 

解题思路:

统计两个字符串中各字母的出现次数,相同,则返回true;不同,则返回false。

使用Collections模块下的counter函数统计各字母出现的次数,返回一个字典。

使用operator模块下的eq(dic1,dic2),比较两个字典是否相同:相同则返回true,否则返回false

class Solution(object):    def isAnagram(self, s, t):        """        :type s: str        :type t: str        :rtype: bool        """        dic1=collections.Counter(s)        dic2=collections.Counter(t)        return operator.eq(dic1,dic2)

 

以下是Java版本:

解法一:

建立一个容量为26大小的int,并将字母转化为int——将字符串的每个字母char值减去‘a'得到,作为数组索引,字母出现次数作为数组值:

1.	public class Solution {2.	    public boolean isAnagram(String s, String t) {3.	        int[] ret=new int[26];4.	        for(int i=0;i

Test:

1.	import java.util.Arrays;  2.	public class Solution {  3.	    public boolean isAnagram(String s, String t) {  4.	        char[] sArr = s.toCharArray();  5.	        char[] tArr = t.toCharArray();  6.	  7.	        Arrays.sort(sArr);  8.	        Arrays.sort(tArr);  9.	  10.	        return String.valueOf(sArr).equals(String.valueOf(tArr));  11.	    }  12.	}

解法二:

map,若map中含有此key,则value+1;否则 value1,取的时候最后看是否为0,如果存在不为0value,返回false

18.	import java.util.HashMap;  19.	import java.util.Map;  20.	  21.	public class Solution {  22.	    public boolean isAnagram(String s, String t) {  23.	        //长度不相等,返回false  24.	        if (s.length() != t.length())  25.	            return false;  26.	        //key为出现的字母,value为字母出现的次数  27.	        Map
map = new HashMap<>(); 28. for (int i = 0; i < s.length(); i++) { 29. if (map.containsKey(s.charAt(i))) { 30. map.put(s.charAt(i), map.get(s.charAt(i)) + 1); 31. } else 32. map.put(s.charAt(i), 1); 33. } 34. for (int i = 0; i < t.length(); i++) { 35. if (map.containsKey(t.charAt(i))) { 36. map.put(t.charAt(i), map.get(t.charAt(i)) - 1); 37. } else 38. return false; 39. } 40. for (int i = 0; i < s.length(); i++) { 41. if (map.get(s.charAt(i)) != 0) 42. return false; 43. 44. } 45. return true; 46. } 47. }

 

转载地址:http://epuvi.baihongyu.com/

你可能感兴趣的文章
阅读笔记《c++ primer》
查看>>
阅读笔记《C++标准程序库》
查看>>
基于mirror driver的windows屏幕录像
查看>>
C语言8
查看>>
Qt实现简单延时
查看>>
qml有关矩形说明
查看>>
在qt中使用QSplitter设置初始比例setStretchFactor失效的解决方法
查看>>
repeater的使用
查看>>
qt msvc编译中文乱码解决
查看>>
qt中TextField输入框无法输入中文解决办法
查看>>
qt实现点击出现窗口,点击其他任何地方窗口消失
查看>>
QML DropArea拖拉文件事件
查看>>
CORBA links
查看>>
读后感:&gt;
查看>>
ideas about sharing software
查看>>
different aspects for software
查看>>
To do list
查看>>
Study of Source code
查看>>
如何使用BBC英语学习频道
查看>>
spring事务探索
查看>>