剑指 Offer II 034. 外星语言是否排序

  1. class Solution {
  2. public boolean isAlienSorted(String[] words, String order) {
  3. if (words == null || words.length == 0 || order == null || order.length() == 0) return false;
  4. Map<Character, Integer> index = new HashMap<>();
  5. for (int i = 0; i < order.length(); i++) {
  6. index.put(order.charAt(i), i);
  7. }
  8. for (int i = 0; i < words.length - 1; i++) {
  9. if (!inOrder(words[i], words[i + 1], index)) return false;
  10. }
  11. return true;
  12. }
  13. private boolean inOrder(String s1, String s2, Map<Character, Integer> index) {
  14. int minLen = Math.min(s1.length(), s2.length());
  15. for (int i = 0; i < minLen; i++) {
  16. char c1 = s1.charAt(i), c2 = s2.charAt(i);
  17. if (c1 != c2) {
  18. if (index.get(c1) > index.get(c2)) {
  19. return false;
  20. } else {
  21. return true;
  22. }
  23. }
  24. }
  25. if (s1.length() > s2.length()) return false;
  26. return true;
  27. }
  28. }