Valid Anagram(有效變位詞)
阿新 • • 發佈:2019-02-05
問題: 給定兩個字串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;
}