每日一题——验证外星语词典

简介: 每日一题——验证外星语词典

953. 验证外星语词典

题目描述:

题解:

func isAlienSorted(words []string, order string) bool {
  // 初始化一个map,代表在新字典序对应的权重
  alphabetMap := make(map[byte]int)
  for i, i2 := range order {
    alphabetMap[byte(i2)] = i
  }
  ans := true
  for i := 0; i < len(words)-1; i++ {
    // 如果二者相等,直接下一波循环
    if words[i+1] == words[i] {
      continue
    }
    shortLen := min(len(words[i+1]), len(words[i]))
    for j := 0; j < shortLen; j++ {
      if alphabetMap[words[i][j]] < alphabetMap[words[i+1][j]] {
        // 如果是最后俩单词,且满足字典序,直接返回true。
        if i+1+1 == len(words) {
          return true
        }
        break
      }
      // 比较在给定的字典序里的大小
      if alphabetMap[words[i][j]] > alphabetMap[words[i+1][j]] {
        ans = false
        return ans
      }
    }
    // 如果内存循环走完,这里我们要考虑,"apple","app" 这种情况,
    // 使用Compare函数,比较二者,如果大于0 就代表没有遵守给的字典序。
    if strings.Compare(words[i], words[i+1]) > 0 {
      ans = false
    }
  }
  return ans
}
func min(a, b int) int {
  if a > b {
    return b
  }
  return a
}

提交结果:

相关文章
|
Cloud Native Go Windows
Windows 11 电脑如何设置自动开机 (Windows 11 2022H2)
Windows 11 电脑如何设置自动开机 (Windows 11 2022H2)
3448 0
|
存储 Java C++
Python 教程之控制流(9)Python 中的 Switch Case(替换)
Python 教程之控制流(9)Python 中的 Switch Case(替换)
874 0
|
3月前
|
机器学习/深度学习 分布式计算 监控
【机会约束】【N-1故障】使用随机方法进行最佳PMU位置确定(Matlab代码实现)
【机会约束】【N-1故障】使用随机方法进行最佳PMU位置确定(Matlab代码实现)
183 3
|
机器学习/深度学习 人工智能 算法
《C++助力无监督学习:挖掘数据潜在结构的高效之道》
在无监督学习中,聚类分析与降维算法至关重要,它们能从未标记数据中发现隐藏结构。使用C++实现时,通过高效计算数据点相似度、优化K-Means算法初始化及采用随机化PCA等技术,可显著提升模型训练和评估的效率。C++的内存管理和多线程特性进一步增强了算法的性能,使其在数据挖掘、图像识别等领域发挥重要作用。
190 11
|
消息中间件 Java Kafka
实时数仓Kappa架构:从入门到实战
【11月更文挑战第24天】随着大数据技术的不断发展,企业对实时数据处理和分析的需求日益增长。实时数仓(Real-Time Data Warehouse, RTDW)应运而生,其中Kappa架构作为一种简化的数据处理架构,通过统一的流处理框架,解决了传统Lambda架构中批处理和实时处理的复杂性。本文将深入探讨Kappa架构的历史背景、业务场景、功能点、优缺点、解决的问题以及底层原理,并详细介绍如何使用Java语言快速搭建一套实时数仓。
1346 4
|
安全 Android开发 数据安全/隐私保护
Android vs. iOS:移动操作系统的巅峰对决###
【10月更文挑战第18天】 本文深入探讨了Android与iOS两大移动操作系统的核心差异、优势与不足,从用户体验、应用生态、系统更新与安全性等多个维度进行了全面对比。我们旨在揭示两大平台背后的设计理念,帮助用户根据自身需求做出更明智的选择。Android以其开放性和高度可定制性著称,为开发者和用户提供了广阔的创新空间;而iOS则凭借其封闭的生态系统和严格的质量控制,提供了流畅且一致的用户体验。两大系统各有千秋,竞争与共生中推动着移动通信技术的不断进步。 ###
|
消息中间件 存储 缓存
RabbitMQ 集群和镜像队列
【1月更文挑战第11天】 一、clustering(集群) 1、使用集群的原因 2、搭建步骤 2.1、拉取镜像 2.2、创建三个RabbitMQ容器节点 2.3、集群搭建 二、镜像队列 1、使用镜像的原因 2、搭建步骤
790 91
|
存储 安全 数据挖掘
云时代下,如何高效管理企业数据
简述管理企业数据的一些方式以及企业版网盘与个人版网盘的差异
|
弹性计算 关系型数据库 MySQL
MySQL数据库快速部署实践
本场景主要介绍如何在一台配置了CentOS 7.7版本的ECS实例(云服务器)上安装mysql,执行mysql的常用操作,学习基本的SQL语句。