[LeetCode ] Valid Anagram
阿新 • • 發佈:2018-11-17
Given two strings s and t , 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
題意:給出兩個字串,判斷兩個字串是否有相同的字元組合。
思路:
解法一:用一個數組記錄字串中的每個字元的出現次數,判斷這兩個陣列是否相等
Java程式碼:
class Solution { public boolean isAnagram(String s, String t) { if (s.length() != t.length()) return false; int[] ss = new int[257]; int[] tt = new int[257]; int len = s.length(); Arrays.fill(ss, 0); Arrays.fill(tt, 0); for (int i = 0; i < len; i++) { ss[s.charAt(i)] ++; tt[t.charAt(i)] ++; } for(int i = 0; i < ss.length; i++) { if(ss[i] != tt[i]) return false; } return true; } }
C程式碼:
bool isAnagram(char* s, char* t) { int len1 = strlen(s); int len2 = strlen(t); if(len1 != len2) return false; int i,ss[257],tt[257]; memset(ss,0,sizeof(ss)); memset(tt,0,sizeof(tt)); for(i = 0; i < len1; i++) { ss[s[i]]++; tt[t[i]]++; } for(i = 0; i < 256; i++) { if(ss[i] != tt[i]) return false; } return true; }
解法二:最兩個字串分別排序,再判斷是否相等。
Java程式碼:
public class Solution {
public boolean isAnagram(String s, String t) {
if (s.length() != t.length())
return false;
char[] ss = s.toCharArray();
char[] tt = t.toCharArray();
Arrays.sort(ss);
Arrays.sort(tt);
return String.valueOf(ss).equals(String.valueOf(tt));
}
}
C程式碼:
int cmp(const void *a,const void *b)
{
return *(int *)a - *(int *)b;
}
bool isAnagram(char* s, char* t) {
int len1 = strlen(s);
int len2 = strlen(t);
if(len1 != len2) return false;
qsort(s,len1,sizeof(char),cmp);
qsort(t,len2,sizeof(char),cmp);
return strcmp(s,t) == 0;
}