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

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

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
}

提交结果:

相关文章
|
存储
实战编程·刻在男人DNA里的浪漫,空气投篮(二)(1)
实战编程·刻在男人DNA里的浪漫,空气投篮(二)
65 1
|
传感器 前端开发 iOS开发
实战编程·刻在男人DNA里的浪漫,空气投篮(二)(4)
实战编程·刻在男人DNA里的浪漫,空气投篮(二)
75 1
|
算法 测试技术
蓝桥算法_单词分析-wordAnalysis
蓝桥算法_单词分析-wordAnalysis
102 1
|
算法
蓝桥杯算法训练】字符串编辑
从键盘输入一个字符串(长度<=40个字符),并以字符 ’.’ 结束。编辑功能有:   1 D:删除一个字符,命令的方式为: D a 其中a为被删除的字符,例如:D s 表示删除字符 ’s’ ,若字符串中有多个 ‘s’,则删除第一次出现的。   2 I:插入一个字符,命令的格式为:I a1 a2 其中a1表示插入到指定字符前面,a2表示将要插入的字符。例如:I s d 表示在指定字符 ’s’ 的前面插入字符 ‘d’ ,若原串中有多个 ‘s’ ,则插入在最后一个字符的前面。   3 R:替换一个字符,命令格式为:R a1 a2 其中a1为被替换的字符,a2为替换的字符,若在原串中有多个a1则应全部
205 0
|
机器学习/深度学习 自然语言处理 安全
将入学考试题搬进中文大模型数据集,20477道题目,还带4个候选答案
将入学考试题搬进中文大模型数据集,20477道题目,还带4个候选答案
215 0
【力扣·每日一题】1816. 截断句子(模拟)
【力扣·每日一题】1816. 截断句子(模拟)
86 0
【力扣·每日一题】1816. 截断句子(模拟)
|
自然语言处理
LeetCode每日一题——953. 验证外星语词典
某种外星语也使用英文小写字母,但可能顺序 order 不同。字母表的顺序(order)是一些小写字母的排列。
124 0
|
C语言
《C游记》 第二章 - 初识分支句 循环助本心(贰)
《C游记》 第二章 - 初识分支句 循环助本心(贰)
127 0
|
C语言
《C游记》 第二章 - 初识分支句 循环助本心(壹)
《C游记》 第二章 - 初识分支句 循环助本心(壹)
151 0