zoukankan      html  css  js  c++  java
  • LeetCode-242.Valid Anagram

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

    Example 1:

    Input: s = "anagram", t = "nagaram"
    Output: true
    

    Example 2:

    Input: s = "rat", t = "car"
    Output: 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?

    使用map,时间复杂度O(n)

    public boolean isAnagram(String s, String t) {//map my
            
            if(null==s&&null==t){
                return true;
            }
            if(null==s||null==t||s.length()!=t.length()){
                return false;
            }
            Map<Character,Integer> map = new HashMap<>();
            for (int i = 0; i < s.length(); i++) {
                char c= s.charAt(i);
                if(map.containsKey(c)){
                    map.put(c,map.get(c)+1);
                }
                else{
                    map.put(c,1);
                }
            }
            for (int i = 0; i < t.length(); i++) {
                char c= t.charAt(i);
                if(map.containsKey(c)){
                    map.put(c,map.get(c)-1);
                    if(map.get(c)==0){
                        map.remove(c);
                    }
                }
                else{
                    return false;
                }
            }
            return true;
        }

    上面的方法具有普遍性,针对该题可以使用数组解决,因为只有26个小写字母,时间复杂度也是O(n)。

    还可以使用排序的方法,但时间复杂度是O(nlogn)。

    进阶题

    异位词分组 LeetCode49 https://www.cnblogs.com/zhacai/p/10576638.html

    查找所有异位词 LeetCode438 https://www.cnblogs.com/zhacai/p/10596274.html

  • 相关阅读:
    C#函数参数前的修饰符
    C#正则表达式简单案例解析
    C#正则表达式
    C#反射Reflection
    C#事件
    C#委托的使用
    无法解析主机报错
    SparkStreaming对接rabbitMQ
    load文件到hive,并保存
    kafka模式对比
  • 原文地址:https://www.cnblogs.com/zhacai/p/10574647.html
Copyright © 2011-2022 走看看