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

    解法一: sort!

     
    public class Solution {
            public boolean isAnagram(String s, String t) {
                char[] schar = s.toCharArray();
                char[] tchar = t.toCharArray();
                Arrays.sort(schar);
                Arrays.sort(tchar);
                s = new String(schar);
                t = new String(tchar);
                return s.equals(t);
            }
        }

     解法二:hashmap

    import java.util.*;
    public class Solution {
        public boolean isAnagram(String s, String t) {
            if(s.length()!=t.length()) return false;
            
            Hashtable<Character, Integer> 
                theTableS = new Hashtable<Character, Integer>(),
                theTableT = new Hashtable<Character, Integer>();
            for (char i:s.toCharArray()) {
                if (theTableS.containsKey(i))
                    theTableS.put(i,theTableS.get(i)+1);
                else theTableS.put(i,1);
            }
            for (char i:t.toCharArray()) {
                if (theTableT.containsKey(i)) 
                    theTableT.put(i,theTableT.get(i)+1);
                else theTableT.put(i,1);
            }
            return theTableT.equals(theTableS);
        }
    }

     解法三:O(n) time, O(1) space

    public class Solution {
        public boolean isAnagram(String s, String t) {
            int[] alphabet = new int[26];
            for (int i = 0; i < s.length(); i++) alphabet[s.charAt(i) - 'a']++;
            for (int i = 0; i < t.length(); i++) alphabet[t.charAt(i) - 'a']--;
            for (int i : alphabet) if (i != 0) return false;
            return true;
        }
    }
  • 相关阅读:
    使用Twitter异常检测框架遇到的坑
    Python从入门到精通
    Windows中几个内存相当的指标
    Windows应用程序进程级别统一监控实践
    基于时序数据的微内核预警引擎架构设计
    Flink1.4.0连接Kafka0.10.2时遇到的问题
    wait和sleep的区别
    JVM几种垃圾回收器介绍
    二叉树的非递归遍历
    段页式内存管理
  • 原文地址:https://www.cnblogs.com/hygeia/p/4858494.html
Copyright © 2011-2022 走看看