パズルとなった単語を返す
2985 ワード
ArayRiddle.javaコードは以下の通りです。
package com.interview.algorithm;
/**
* String , .
* : :stale least
* :
* 1.
* 2.
* @author yangjianzhou
*
*/
public class ArrayRiddle {
public static void main(String[] args) {
String [] strArr = {"123","231","2","1","asdde","12345","sddae","Dasdasdqwe","wdasdqwed"};
stringArrInsertionSort(strArr);
int index = getIndex(strArr);
if(index >-1){
System.out.println(strArr[index]);
System.out.println(strArr[index+1]);
}
}
/**
* ,
* @param str
* @return
*/
private static String insertionSort(String str){
char [] target = str.toCharArray();
for(int i=1;i<target.length;i++){
char temp = target[i];
int j = i;
for(;j>0&&temp<target[j-1];j--){
target[j] = target[j-1];
}
target[j] = temp;
}
return String.valueOf(target);
}
/**
*
* :
* 1.
* 2. ASCII
* @param strArr
*/
private static void stringArrInsertionSort(String[] strArr){
for(int i=1;i<strArr.length;i++){
String temp = strArr[i];
int j = i;
for(;j>0&&(compare(temp,strArr[j-1])==-1);j--){
strArr[j] = strArr[j-1];
}
strArr[j] = temp;
}
}
/**
*
* @param strArr
* @return
*/
private static int getIndex(String[] strArr){
int index = -1;
for(int i=0;i<strArr.length-1;i++){
if(strArr[i].length()!=strArr[i+1].length()){
continue;
}else{
String str1 = insertionSort(strArr[i]);
String str2 = insertionSort(strArr[i+1]);
if(str1.equals(str2)){
index = i;
}
}
}
return index ;
}
/**
*
* 1. -1
* 2. 0
* 3. 1
* @param str1
* @param str2
* @return
*/
private static int compare(String str1,String str2){
if(str1.length()<str2.length()){
return -1;
}else if(str1.length()>str2.length()){
return 1;
}else{
String temp1 = insertionSort(str1);
String temp2 = insertionSort(str2);
char [] c1 = temp1.toCharArray();
char [] c2 = temp2.toCharArray();
for(int i=0;i<c1.length;i++){
if(c1[i]<c2[i]){
return -1;
}
}
return 0;
}
}
}
運転結果は以下の通りです。
asdde
sddae