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 协议》,转载必须注明作者和本文链接
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

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