Skip to content

java-leetcode-classroom/java_valid_anagram

Repository files navigation

java_valid_anagram

Given two strings s and t, return true if t is an anagram of s, and false otherwise.

An Anagram is a word or phrase formed by rearranging the letters of a different word or phrase, typically using all the original letters exactly once.

Examples

Example 1:

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

Example 2:

Input: s = "rat", t = "car"
Output: false

Constraints:

  • 1 <= s.length, t.length <= $5*10^4$
  • s and t consist of lowercase English letters.

解析

給定兩個字串 s, t

要求實作一個演算法 判斷 s 是不是 t 的 anagram

s 如果是 t 的 anagram 需要符合以下條件

  1. s, t 的字串長度相同
  2. s, t 相同的字元個數相同

所以只要先檢查

s,t 長度是否相同

因為 s,t 是由 ‘a’-’z’

所以可以透過 長度 26 的整數陣列來儲存個數

所以 每個字元 ch - ‘a’ 是介於 0 - 25

然後對每個累計遇到的字元

遇到 s_c - ‘a’ 則加一

遇到 t_c - ‘a’ 則減一

時間複雜度是 O(n)

程式碼

public class Solution {
    public boolean isAnagram(String s, String t) {
        int sLen= s.length();
        int tLen = t.length();
        if (sLen != tLen) {
            return false;
        }
        int[] freq = new int[26];
        for (int idx = 0; idx < sLen; idx++) {
            char s_c = s.charAt(idx);
            char t_c = t.charAt(idx);
            int s_diff = s_c - 'a';
            int t_diff = t_c - 'a';
            freq[s_diff]++;
            freq[t_diff]--;
        }
        for (int count : freq) {
            if (count != 0) {
                return false;
            }
        }
        return true;
    }
}

困難點

  1. 理解 anagram 特性
  2. 運用 Hashtable 加快找尋

Solve Point

  • Understand what problem to solve
  • Analysis Complexity
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy