⭐北邮复试刷题LCR 034. 验证外星语词典__哈希思想 (力扣119经典题变种挑战)

这篇具有很好参考价值的文章主要介绍了⭐北邮复试刷题LCR 034. 验证外星语词典__哈希思想 (力扣119经典题变种挑战)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

LCR 034. 验证外星语词典

某种外星语也使用英文小写字母,但可能顺序 order 不同。字母表的顺序(order)是一些小写字母的排列。

给定一组用外星语书写的单词 words,以及其字母表的顺序 order,只有当给定的单词在这种外星语中按字典序排列时,返回 true;否则,返回 false。

示例 1:
输入:words = [“hello”,“leetcode”], order = “hlabcdefgijkmnopqrstuvwxyz”
输出:true
解释:在该语言的字母表中,‘h’ 位于 ‘l’ 之前,所以单词序列是按字典序排列的。

示例 2:
输入:words = [“word”,“world”,“row”], order = “worldabcefghijkmnpqstuvxyz”
输出:false
解释:在该语言的字母表中,‘d’ 位于 ‘l’ 之后,那么 words[0] > words[1],因此单词序列不是按字典序排列的。

示例 3:
输入:words = [“apple”,“app”], order = “abcdefghijklmnopqrstuvwxyz”
输出:false
解释:当前三个字符 “app” 匹配时,第二个字符串相对短一些,然后根据词典编纂规则 “apple” > “app”,因为 ‘l’ > ‘∅’,其中 ‘∅’ 是空白字符,定义为比任何其他字符都小(更多信息)。

提示:
1 <= words.length <= 100
1 <= words[i].length <= 20
order.length == 26
在 words[i] 和 order 中的所有字符都是英文小写字母。

题解:

本题我们还是以数组形式常规创建hash映射,区别为hash数组元素对应的值我们选用字母在所给order字符串中的顺序,以此作为优先级;
因此在比较两字符串时,我们转码为数字形式,进行优先级比对即可;

代码:

class Solution {
    public boolean isAlienSorted(String[] words, String order) {
        int hash[] = new int[26];
        for(int i=0;i<order.length();i++){
            char tmp = order.charAt(i);
            hash[tmp - 'a'] = i+1;
        }
        
        if(words.length == 1)
            return true;
        for(int i=1;i<words.length;i++){
            String left = words[i-1];
            String right = words[i];
            // 利用哈希数组将字符转码为数字,利用数字比较
            // 因数字较大超过10,不可直接利用十进制数大小直接比较
            boolean flag = charToNum(left,right,hash);
            // flag为每次比较的结果,而我们要的是总的比较结果
            if(!flag){
                return false;
            }
        }

        return true;
    }

    public boolean charToNum(String l ,String r ,int[] hash){
        int llen = l.length();
        int rlen = r.length();
        int lnum[] = new int[llen];
        int rnum[] = new int[rlen];

        for(int i=0;i<llen;i++){
            lnum[i] = hash[l.charAt(i) - 'a'];
        }
        
        for(int i=0;i<rlen;i++){
            rnum[i] = hash[r.charAt(i) - 'a'];
        }

        for(int i=0;i<llen && i<rlen;i++){
            // 注意审题,是只要两个单词之间出现大于的字符即算成功,而不是要求两个单词之间每对都为大于关系
            if(lnum[i] < rnum[i])
                return true;
            else if(lnum[i] > rnum[i])
                return false;
        }

        if(llen == rlen || llen < rlen)
            return true;
        
        return false;
    }
}

结果:

⭐北邮复试刷题LCR 034. 验证外星语词典__哈希思想 (力扣119经典题变种挑战),Leetcode每日刷题,# 哈希思想与哈希映射,哈希算法,leetcode,散列表,北邮,Java文章来源地址https://www.toymoban.com/news/detail-836093.html

到了这里,关于⭐北邮复试刷题LCR 034. 验证外星语词典__哈希思想 (力扣119经典题变种挑战)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 网络空间安全——MS15_034漏洞验证与安全加固

    网络空间安全——MS15_034漏洞验证与安全加固 靶机 : windows 2008 安装好 iis7.5   1. 安装 iis7.5, 用 127.0.0.1 访问,将访问页面截图 2. 用 burpsuite  抓包 分析是否存在 ms15_034 漏洞,抓包验证截图 3. 调用 msf 相应的测试模块进行扫描,将测试模块截图 4. 将测试结果进行截图,判断是

    2024年02月11日
    浏览(35)
  • 考研算法复试刷题19天:Prim算法求最小生成树 【prim,最小生成树】

    参考博客:图解:什么是最小生成树? - 知乎 (zhihu.com)  总结下来的过程就是,一张图,我们将他化为树的形式,也就是生成树。那么最小生成树有是啥呢? 所谓一个 带权图 的最小生成树,就是原图中边的权值最小的生成树 ,所谓最小是指边的权值之和小于或者等于其它

    2024年02月07日
    浏览(48)
  • LeetCode刷题 --- 哈希表

    1. 两数之和 解题思路: 利用哈希表,key存数组当前值,value存数组下标 两数之和等于target,可以看做是两个数是配对 遍历数组,看哈希表中有没有值和这个当前值配对,如果没有,就存入哈希表 如果有,当前数,和配对的数,就是所求值。 3. 无重复字符的最长子串 解题

    2024年02月07日
    浏览(36)
  • 算法刷题-哈希表-快乐数

    该用set的时候,还是得用set 力扣题目链接 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果 可以变为 1,那

    2024年02月09日
    浏览(31)
  • 算法刷题-哈希表-四数之和

    一样的道理,能解决四数之和 那么五数之和、六数之和、N数之和呢? 力扣题目链接 题意:给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。 注意:

    2024年02月09日
    浏览(73)
  • 算法刷题-哈希表-三数之和

    用哈希表解决了两数之和,那么三数之和呢? 力扣题目链接 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。 注意: 答案中不可以包含重复的三元组。 示例: 给定数组 nums = [-1, 0, 1, 2

    2024年02月09日
    浏览(31)
  • 【算法刷题之哈希表(2)】

    (1)题目描述 给你四个整数数组 nums1、nums2、nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i, j, k, l) 能满足: 0 = i, j, k, l n nums1[i] + nums2[j] + nums3[k] + nums4[l] == 0 (2)思路与方法 对于这道题可能首先想到的就是对于四个数组进行循环遍历,但是这种方法的时间复杂

    2024年02月11日
    浏览(31)
  • 算法刷题-哈希表-四数相加

    需要哈希的地方都能找到map的身影 力扣题目链接 给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) ,使得 A[i] + B[j] + C[k] + D[l] = 0。 为了使问题简单化,所有的 A, B, C, D 具有相同的长度 N,且 0 ≤ N ≤ 500 。所有整数的范围在 -2^28 到 2^28 - 1 之间,最终结果

    2024年02月08日
    浏览(33)
  • 算法刷题-哈希表-有效的字母异位词

    数组就是简单的哈希表,但是数组的大小可不是无限开辟的 力扣题目链接 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 示例 1: 输入: s = “anagram”, t = “nagaram” 输出: true 示例 2: 输入: s = “rat”, t = “car” 输出: false 说明: 你可以假设字符串只包

    2024年02月09日
    浏览(33)
  • 刷题笔记day07-哈希表part03

    2024年02月06日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包