953. Verifying an Alien Dictionary

解法一

思路

这道题想法比较直白,按给定的字符排序来判断字符串数组的元素是否按字典顺序排序。那么只要将前后字符的同个位置元素按字典比较即可。而且只需比较到较短的那个字符串长度为止。如果前一单词 i 位置字符小于后一单词 i 位置字符,那么直接比较下一组单词。 如果大于,就返回false; 如果相等,则继续比较下一个位置。还有一种情况是,前n个位置的字符都相等,那么较长的字符应该排在后面。比如"apple"应该排在"app"后面。

class Solution {
    public boolean isAlienSorted(String[] words, String order) {
        HashMap<Character, Integer> map = new HashMap<>();
        for (int i = 0; i < order.length(); i++) {
            map.put(order.charAt(i), i);
        }

        loop:
        for (int  i = 0; i < words.length - 1; i++) {
            String word1 = words[i];
            String word2 = words[i+1];
            int len = Math.min(word1.length(), word2.length());

            if (word1.substring(0,len).equals(word2.substring(0,len))) {
                if (word1.length() > word2.length()) {
                    return false;
                }
                else {
                    continue loop;
                }
            }
            else
            {
                    for (int j = 0; j < len; j++) {
                    int order1 = map.get(word1.charAt(j));
                    int order2 = map.get(word2.charAt(j));
                    if (order1 > order2) {
                        return false;
                    }
                    else if (order1 < order2) {
                        continue loop;
                    }
                }
            }
        }
        return true;
    }
    }
本作品采用《CC 协议》,转载必须注明作者和本文链接
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!