• LeetCode 242. Valid Anagram (验证变位词)


    Given two strings s and t, write a function to determine if t is an anagram of s.

    For example,
    s = "anagram", t = "nagaram", return true.
    s = "rat", t = "car", return false.

    Note:
    You may assume the string contains only lowercase alphabets.

    Follow up:
    What if the inputs contain unicode characters? How would you adapt your solution to such case?


    题目标签:Hash Table

      题目给了我们两个string, 让我们判断它们是不是变位词。

      方法1:可以利用HashMap 来记录string s 的字母,和数量,接着用t 的字母和数量 来验证。

      方法2:可以把两个string 变为 char array,接着sort 两个array,比较它们是不是一致。

    Java Solution 1:

    Runtime beats 18.65% 

    完成日期:05/27/2017

    关键词:HashMap

    关键点:利用HashMap来存入s,用t 来验证

     1 class Solution 
     2 {
     3     public boolean isAnagram(String s, String t) 
     4     {
     5         /* Solution 1: HashMap */
     6         HashMap<Character, Integer> map = new HashMap<>();
     7         
     8         // first time: store each s char and occurrence into map
     9         for(int i=0; i<s.length(); i++)
    10         {
    11             char sChar = s.charAt(i);
    12             map.put(sChar, map.getOrDefault(sChar, 0) + 1);
    13         }
    14         // second time: compare t char with map to see match or not
    15         for(int i=0; i<t.length(); i++)
    16         {
    17             char tChar = t.charAt(i);
    18             
    19             if(!map.containsKey(tChar))
    20                 return false;
    21             
    22             if(map.get(tChar) == 1)
    23                 map.remove(tChar);
    24             else
    25                 map.put(tChar, map.get(tChar) - 1);
    26             
    27             
    28         }
    29         
    30         return map.size() == 0 ? true : false;
    31     }
    32 }

    Java Solution 2:

    Runtime beats 28.32% 

    完成日期:05/27/2017

    关键词:Sort

    关键点:把s 和t 都转化为char array,然后sort

     1 class Solution 
     2 {
     3     public boolean isAnagram(String s, String t) 
     4     {
     5         /* Solution 2: sort */
     6         if(s.length() != t.length() || s == null || t == null)
     7             return false;
     8         
     9         
    10         char[] s_arr = s.toCharArray();
    11         
    12         Arrays.sort(s_arr);
    13         
    14         char[] t_arr = t.toCharArray();
    15         
    16         Arrays.sort(t_arr);
    17         
    18         for(int i=0; i<s.length(); i++)
    19         {
    20             if(s_arr[i] != t_arr[i])
    21                 return false;
    22         }
    23         
    24         return true;
    25         
    26     }
    27 }

    参考资料:N/A

    LeetCode 题目列表 - LeetCode Questions List

  • 相关阅读:
    is quoted with ["] which must be escaped when used within the value
    QueryDSL与SpringDataJPA复杂查询
    遍历list,同时remove不符合条件的元素
    解决AnnotationTransactionAttributeSource is only available on Java 1.5 and highe
    Windows系统安装MySQL
    sqlyog导sql文件
    myeclipse导入maven项目
    Invalid 'log4jConfigLocation' parameter: class path resource [log4j.xml] cannot be resolved to URL because it does not exist
    Nginx SSL+tomcat集群,取不到https正确协议
    微信开发之通过代理调试本地项目
  • 原文地址:https://www.cnblogs.com/jimmycheng/p/7770457.html
Copyright © 2020-2023  润新知