验证外星语词典

2024-06-03 03:52
文章标签 验证 词典 外星

本文主要是介绍验证外星语词典,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        在解决算法题时,哈希表是经常被使用的工具,可以用来记录字符串中字母出现的次数,字符串中字符出现的位置等,这里用到的就是利用哈希表储存字符串中字符出现的的位置。
         “外星语”的字母表顺序是不一样的,所以为了方便查找单词顺序,可以创建一个哈希表,哈希表的键为字母表的每个字母,而值为字母在字母表中的顺序。

        由于“外星语”的字母数量也是有限的,也是26个,所以可以用一个数组模拟哈希表。数组下标对应哈希表的键,数组的值对应哈希表的值。

        

class Solution {public boolean isAlienSorted(String[] words, String order) {// 创建一个映射数组,用来存储每个字母在外星字母表中的顺序int[] map = new int[26];for (int i = 0; i < order.length(); ++i) {map[order.charAt(i) - 'a'] = i; // 将外星字母表中的字母映射到它们的顺序}// 两两比较单词,确保它们按照外星字母表的顺序排列for (int i = 0; i < words.length - 1; ++i) {if (!isOrdered(words[i], words[i + 1], map)) {return false; // 如果当前单词和下一个单词不按顺序排列,返回 false}}return true; // 所有单词都按外星字母表的顺序排列}private boolean isOrdered(String word1, String word2, int[] map) {int len1 = word1.length();int len2 = word2.length();int minLength = Math.min(len1, len2);for (int i = 0; i < minLength; ++i) {char char1 = word1.charAt(i);char char2 = word2.charAt(i);if (char1 != char2) {return map[char1 - 'a'] < map[char2 - 'a']; // 比较字符在外星字母表中的顺序}}return len1 <= len2; // 如果前面的字符都相等,较短的单词应该在前面}
}

这篇关于验证外星语词典的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1025945

相关文章

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

C++ | Leetcode C++题解之第393题UTF-8编码验证

题目: 题解: class Solution {public:static const int MASK1 = 1 << 7;static const int MASK2 = (1 << 7) + (1 << 6);bool isValid(int num) {return (num & MASK2) == MASK1;}int getBytes(int num) {if ((num &

C语言 | Leetcode C语言题解之第393题UTF-8编码验证

题目: 题解: static const int MASK1 = 1 << 7;static const int MASK2 = (1 << 7) + (1 << 6);bool isValid(int num) {return (num & MASK2) == MASK1;}int getBytes(int num) {if ((num & MASK1) == 0) {return

easyui同时验证账户格式和ajax是否存在

accountName: {validator: function (value, param) {if (!/^[a-zA-Z][a-zA-Z0-9_]{3,15}$/i.test(value)) {$.fn.validatebox.defaults.rules.accountName.message = '账户名称不合法(字母开头,允许4-16字节,允许字母数字下划线)';return fal

easyui 验证下拉菜单select

validatebox.js中添加以下方法: selectRequired: {validator: function (value) {if (value == "" || value.indexOf('请选择') >= 0 || value.indexOf('全部') >= 0) {return false;}else {return true;}},message: '该下拉框为必选项'}

web群集--nginx配置文件location匹配符的优先级顺序详解及验证

文章目录 前言优先级顺序优先级顺序(详解)1. 精确匹配(Exact Match)2. 正则表达式匹配(Regex Match)3. 前缀匹配(Prefix Match) 匹配规则的综合应用验证优先级 前言 location的作用 在 NGINX 中,location 指令用于定义如何处理特定的请求 URI。由于网站往往需要不同的处理方式来适应各种请求,NGINX 提供了多种匹

React 笔记 父子组件传值 | 父组件调用子组件数据 | defaultProps | propsType合法性验证

1.通过props实现父组件像子组件传值 、方法、甚至整个父组件 传递整个父组件则   [变量名]={this} import Header from "./Header"render(){return(<Header msg={"我是props传递的数据"}/>)} import React,{Component} from "react";class Header extends

Java验证辛钦大数定理

本实验通过程序模拟采集大量的样本数据来验证辛钦大数定理。   实验环境: 本实验采用Java语言编程,开发环境为Eclipse,图像生成使用JFreeChart类。   一,验证辛钦大数定理 由辛钦大数定理描述为: 辛钦大数定理(弱大数定理)  设随机变量序列 X1, X2, … 相互独立,服从同一分布,具有数学期望E(Xi) = μ, i = 1, 2, …, 则对于任意正数ε ,

【python因果推断库11】工具变量回归与使用 pymc 验证工具变量4

目录  Wald 估计与简单控制回归的比较 CausalPy 和 多变量模型 感兴趣的系数 复杂化工具变量公式  Wald 估计与简单控制回归的比较 但现在我们可以将这个估计与仅包含教育作为控制变量的简单回归进行比较。 naive_reg_model, idata_reg = make_reg_model(covariate_df.assign(education=df[

表单验证(WTF)

官方文档 在Flask项目开发中针对提交表单的校验,可以使用Flask-WTF扩展库进行快速的字段校验,也可以进行页面快速渲染,并提供跨站请求伪造的保护功能。 安装Flask-WTF pip install flask-wtf 实现注册功能 注册表单模型定义 在定义的表单类中定义需要验证的username、password和password2字段,并实现如下校验: 校验密码passw