単語のアルファベットと同じかどうかで、文字列配列をグループ化します。


今日は面接の質問をもらいました。配列をあげました。 [cars]、「thing」、「scar」、「dog」、「god」、「arcs」、「the」)は、逆さまのアルファベット順からなる単語を同じ配列に置く必要があります。
私はこのように実現しました。
package com.mingyisoft.bean.test;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import org.apache.commons.lang3.ArrayUtils;
public class SameWordUtile {
/**
 *              
 * 
 * @param sourceStr 
 * @param targetStr
 * @return
 */
public static boolean checkSimilarDegree(String sourceStr, String targetStr) {
boolean checkResult = false;
if (sourceStr.length() == targetStr.length()) {
char[] sourceStrCharArray = sourceStr.toCharArray();
char[] targetStrCharArray = targetStr.toCharArray();
int n = targetStrCharArray.length;
for (int i = 0; i  tempMap = new HashMap();
boolean hasSame = false;
for (int i = 0; i > entrySet = tempMap.entrySet();
for (Entry entry : entrySet) {
String keyString = entry.getKey();
//            
if (checkSimilarDegree(keyString, sourceArray[i])) {
//      ,              
entry.setValue(ArrayUtils.add(tempMap.get(keyString),
sourceArray[i]));
hasSame = true;
break;
}
}
if (!hasSame) {
//       ,    key-value,key         ,value       (      )
tempMap.put(sourceArray[i], new String[] { sourceArray[i] });
}
}
}
return  tempMap.values().toArray();
}
public static void main(String[] args) {
String[] sourceArray = new String[] { "cars", "thing", "scar", "dog",
"god", "arcs", "the","het" };
Object[] targetObjectArr = classify(sourceArray);
for(Object tempObj:targetObjectArr){
String[] ss = (String[]) tempObj;
System.out.println(ArrayUtils.toString(ss));
}
}
}
面接の結果はアルゴリズムが複雑で、これより効率的なアルゴリズムです。