1. 程式人生 > >Valid Anagram(有效變位詞)

Valid Anagram(有效變位詞)

問題: 給定兩個字串s和t,寫一個函式判斷s是否是t的變位詞。
例如:
s = “anagram”, t = “nagaram”, return true.
s = “rat”, t = “car”, return false.

方法1. 利用Arrays.sort()

public class Solution {
    public boolean isAnagram(String s, String t) {
            if(s.length()==0&&t.length()==0) return true;//都為空字串
        if
(s.length()!=t.length()) return false;//長度不相等則不為變為詞 char[] chars=s.toCharArray(); char[] chart=t.toCharArray(); Arrays.sort(chars); Arrays.sort(chart);//對s和t進行重新排序 for(int i=0;i<s.length();i++) { if(chars[i]!=chart[i]) return false;//存在不相等的字元 } return
true; } }

Arrays.sort()的用法
- public static void sort(int[] a/char[] c)
對指定的 int 型陣列按數字升序進行排序。引數:a - 要排序的陣列
- public static void sort(int[] a, int fromIndex, int toIndex)
- 對指定 int 型陣列的指定範圍按數字升序進行排序。排序的範圍從索引 fromIndex(包括)一直到索引 toIndex(不包括)。(如果 fromIndex==toIndex,則排序範圍為空。)

方法2. 利用一個數組標記

public
boolean isAnagram(String s, String t) { if (s.length() != t.length() ) return false; int[] alphabet = new int[26];//用陣列標記字串中的字母 for(int i = 0; i< 26; i++) { alphabet[i] = 0;//初始化為0 } for(int i = 0; i < s.length(); i++) { alphabet[s.charAt(i) - 'a']++;//標記字串s中每個字母出現的次數 } for(int i = 0; i < t.length(); i++) { alphabet[t.charAt(i) - 'a']--;//將字串t中相應的字母減去 if(alphabet[t.charAt(i) -'a'] < 0) return false;//如果不相等 } return true; }