문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음
외계 언어에서, 놀랍게도, 영어 소문자를 사용하지만, 다른 order로 사용하고 있다. 알파벳의 order는 소문자의 순열 중 하나일 것이다.
외계 언어로 쓰인 words와 알파벳의 order가 주어졌을 때, 주어진 words가 외계 언어의 사전순으로 정렬되어 있으면 true를 반환해라.
#1
Input: words = ["hello", "leetcode"], order = "hlabcdefgijkmnopqrstuvwxyz"
Output: true
Explanation: 이 언어에서 'h'가 'l'보다 먼저 있어서 정렬되어 있다.
#2
Input: words = ["word", "world", "row"], order = "worldabcefghijkmnpqstuvxyz"
Output: false
Explanation: 이 언어에서 'l' 다음에 'd'가 있어서, words[0] > words[1]이 되어서 정렬되지 있지 않다.
#3
Input: words = ["apple", "app"], order = "abcdefghijklmnopqrstuvwxyz"
Output: false
class Solution {
public boolean isAlienSorted(String[] words, String order) {
if(words.length == 1){
return true;
}
Map<Character, Integer> orderMap = new HashMap<>();
for(int i = 0; i < order.length(); i++){
orderMap.put(order.charAt(i), i);
}
for(int i = 0; i < words.length - 1; i++){
for(int j = 0; j < words[i].length(); j++){
if(j >= words[i + 1].length()){
return false;
}
if(words[i].charAt(j) != words[i + 1].charAt(j)){
if(orderMap.get(words[i].charAt(j)) > orderMap.get(words[i + 1].charAt(j))){
return false;
}else{
break;
}
}
}
}
return true;
}
}