package com.interview.algorithms.string;
import com.interview.algorithms.general.C1_59_PrimeNumber;
import com.interview.basics.sort.QuickSorterThreeWay;
import com.interview.basics.sort.Sorter;
/**
* Created_By: stefanie
* Date: 14-10-19
* Time: 上午9:37
*/
public class C11_31_AnagramSort {
static class Element implements Comparable<Element>{
Long key;
String value;
Element(Long key, String value) {
this.key = key;
this.value = value;
}
@Override
public int compareTo(Element o) {
return this.key.compareTo(o.key);
}
}
static Sorter<Element> SORTER = new QuickSorterThreeWay<>();
static int[] PRIM;
static{
PRIM = C1_59_PrimeNumber.generate(26);
}
public static String[] sort(String[] array){
Element[] elements = new Element[array.length];
for(int i = 0; i < array.length; i++) elements[i] = new Element(getKey(array[i].toLowerCase()), array[i]);
SORTER.sort(elements);
for(int i = 0; i < array.length; i++) array[i] = elements[i].value;
return array;
}
private static Long getKey(String str){
long key = 1;
for(int i = 0; i < str.length(); i++) key *= PRIM[str.charAt(i) - 'a'];
return key;
}
}