아래 코드와 같이 알파벳 순서에 따라 문자열의 순열을 찾는 더 효율적인 방법이 있다면 조언을 구합니다. 최대 16 자까지 문자열을 처리하고 있으며 많은 양의 데이터가 필요하며 프로그램을 실행하는 데 너무 많은 시간과 메모리가 필요합니다. 문제의알파벳 순서에 따라 문자열 ' "순열"을 찾습니다.
기본 표현
입력 : 알파벳
출력 : 그래서 단어 "알파벳"편지에서
'는'알파벳의 첫 번째 16752348, 그것을 인덱스 1을 표시, 그런 다음 다섯 번째 위치에 다른 'a'가오고 2로 표시 한 다음 여섯 번째 위치에 'b'가오고 3 등으로 표시합니다.
코드에서 숫자 대신 색인을 사용합니다. of, 나는 ASCII 값의 65라는 문자를 사용한다. (왜냐하면 나는 긴 문자열을 테스트하기 때문에,하지만 주요 목적은 바뀌지 않는다.) 알파벳
출력 : AFGEBCDH
public static String perm(String word){
char[] perm = new char[word.length()];
char[] wordArray = word.toCharArray();
char[] sortedWord = new char[word.length()];
sortedWord = word.toCharArray();
Arrays.sort(sortedWord);
for (int i=0; i<word.length(); i++){
for (int j=0; j<word.length(); j++){
if (sortedWord[i] == wordArray[j]){
perm[j] = (char)(65+i); //from A
wordArray[j] = '.';
j = word.length(); //in case, if the word has more of the tested char, we jump to the end of the cycle
}
}
}
return String.valueOf(perm);
}
public static void main (String [] args){
System.out.println(perm("alphabet"));
}
로컬 언어에 대해서도이 작업을 수행해야하지만이 방법이 가장 빠릅니다. 이를 위해 나는 그 언어의 상응하는 알파벳으로 찾아보기 테이블을 만들었다. – preem