zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    js 手机端触发事事件、javascript手机端/移动端触发事件
    行高引起的行内块级元素间距
    js实现复制功能
    encodeURI、encodeURIComponent、decodeURI、decodeURIComponent的区别
    CSS动画总结效果
    CSS属性之word-break:break-all强制性换行
    在handlebars.js {{#if}}条件下的逻辑运算符解决方案
    js模版引擎handlebars.js实用教程——由于if功力不足引出的Helper
    垂直方向兼容显示的内容多少的情况样式Flex布局
    实现div里的img图片水平垂直居中
  • 原文地址:https://www.cnblogs.com/jimmycheng/p/7770457.html
Copyright © 2011-2022 走看看