Untitled
unknown
plain_text
3 years ago
1.3 kB
4
Indexable
class Solution { int mod = 1000000007; public int countAnagrams(String s) { String[] strs = s.split(" "); int[] letter = new int[26]; long res =1; for(String str:strs){ int len = str.length(); for(char c:str.toCharArray()){ letter[c-'a']++; } for(int val :letter){ if(val!=0){ res=res*calculate(val,len)%mod; len-=val; } } for(int i=0;i<26;i++){ letter[i]=0; } } return (int)res; } public long calculate(int target,int total){ if(target>(total-target)){ target = total -target; } long res =1; for(long i=total;i>total-target;i--){ res = res*i%mod; } for(long i=target;i>1;i--){ res=res * qmi(i, mod - 2) % mod; } return res; } public long qmi(long a, long k) { long res = 1; while (k > 0) { if ((k & 1) != 0) res = res * a % mod; a = a * a % mod; k >>= 1; } return res; } }
Editor is loading...