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


    解题思路:(两种方法)

    1. 利用JAVA library 自带的Arrays.sort.  That sort method uses the quicksort algorithm. 排序完后比较两个string, 相同则true, 不同则false. run time 一般。

    2. 我们先判断两个字符串长度是否相同,不相同直接返回false。然后把s中所有的字符出现个数统计起来,存入一个大小为26的数组中,因为题目中限定了输入字符串为小写字母组成。然后我们再来统计t字符串,如果发现不匹配则返回false。 run time 很快。


     Java code:

     1 import java.util.Arrays;
     2 
     3 public class ValidAnagram {
     4     public static void main(String[] args) {
     5         boolean x = isAnagram("anagram",  "nagaram");
     6         System.out.println(x);
     7     }
     8 
     9     /*
    10     * method1: use Arrays.sort
    11     * run time Medium
    12     * */
    13     public static boolean isAnagram(String s, String t) {
    14         if(s.length() != t.length()) { return false; }
    15         char[] s1 = s.toCharArray();
    16         Arrays.sort(s1);
    17         String s_sorted = String.valueOf(s1);
    18         char[] t1 = t.toCharArray();
    19         Arrays.sort(t1);
    20         String t_sorted = String.valueOf(t1);
    21         if(s_sorted.equals(t_sorted)) {return true;}
    22         return false;
    23     }
    24 
    25     /*
    26     * method2
    27     * run time Fast!
    28     * */
    29     public static boolean isAnagram(String s, String t) {
    30         if(s.length() != t.length()) { return false; }
    31         int[] m = new int[26];
    32         for(int i= 0; i< s.length(); i++) {
    33             m[s.charAt(i)-'a']++;
    34         }
    35         for(int i= 0; i< t.length(); i++){
    36             m[t.charAt(i)-'a']--;
    37         }
    38         for(int i=0; i< 26; i++) {
    39             if(m[i]!=0) {return false;}
    40         }
    41         return true;
    42     }
    43 }

    Reference:

    1. http://www.cnblogs.com/grandyang/p/4694988.html

    2. http://bookshadow.com/weblog/2015/08/01/leetcode-valid-anagram/

  • 相关阅读:
    usaco-4.1-nuggets-passed
    usaco-3.4-rockers-passed
    usaco-3.4-fence9-passed
    usaco-3.4-heritage-passed
    usaco-3.3-game1-passed
    usaco-3.3-range-passed
    usaco-3.3-camelot-passed
    6.23课堂作业
    初识JVM虚拟机
    JDK安装以及配置环境变量的步骤
  • 原文地址:https://www.cnblogs.com/anne-vista/p/4793484.html
Copyright © 2011-2022 走看看