golang力扣leetcode 937.重新排列日志文件

简介: golang力扣leetcode 937.重新排列日志文件

937.重新排列日志文件

937.重新排列日志文件

题解

题目:简单题

1.如果字符串第二部分是数字,则排最终结果的最后
2.如果两个字符串第二部分都是数字,则保持相对稳定
3.如果字符串第二部分是字母,则字母排前面
3.如果两个字符串第二部分都是字母,则第二部分按字典序排
3.如果第二部分也相等,按第一部分字典序排

思路:内置排序写less,或者模拟。简单题没什么难度,主要是学到了新的函数

介绍:

sort.Slice()//相同元素时不保证稳定
sort.SliceStable()//相同元素时保证稳定
strings.SplitN(logs[i], " ", 2)//字符串最多被分为N份,这里是2
比如“a b c d e”------>["a","b c d e"]

代码

func reorderLogFiles(logs []string) []string {
  sort.SliceStable(logs, func(i, j int) bool {
    cnt1 := strings.SplitN(logs[i], " ", 2)
    a1, a2 := cnt1[0], cnt1[1]
    cnt2 := strings.SplitN(logs[j], " ", 2)
    b1, b2 := cnt2[0], cnt2[1]
    aIsDig, bIsDig := unicode.IsDigit(rune(a2[0])), unicode.IsDigit(rune(b2[0]))
    if aIsDig && bIsDig { //都是数字,则不交换,返回false
      return false
    }
    if !aIsDig && !bIsDig { //都是字母,按照题目要求来
      return a2 < b2 || a2 == b2 && a1 < b1
    }
    return !aIsDig //如果a是字母,则不用交换, 如果a是数字,需要交换
  })
  return logs
}
func reorderLogFiles(logs []string) []string {
  ans1 := make([]string, 0)
  ans2 := make([]string, 0)
  arr := make([]string, 0)
  mp := make(map[string][]string)
  for _, log := range logs {
    n := len(log) - 1
    if log[n] >= '0' && log[n] <= '9' {
      ans2 = append(ans2, log)
      continue
    }
    cnt := strings.SplitN(log, " ", 2)
    logFst, logSec := cnt[0], cnt[1]
    mp[logSec] = append(mp[logSec], logFst)
  }
  for k := range mp {
    arr = append(arr, k)
  }
  sort.Strings(arr)
  for _, v := range arr {
    vv := mp[v]
    sort.Strings(vv)
    for _, vvv := range vv {
      cnt := vvv + " " + v
      ans1 = append(ans1, cnt)
    }
  }
  return append(ans1, ans2...)
}
相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
目录
相关文章
|
7月前
|
存储 监控 算法
防止员工泄密软件中文件访问日志管理的 Go 语言 B + 树算法
B+树凭借高效范围查询与稳定插入删除性能,为防止员工泄密软件提供高响应、可追溯的日志管理方案,显著提升海量文件操作日志的存储与检索效率。
229 2
|
运维 应用服务中间件 nginx
docker运维查看指定应用log文件位置和名称
通过本文的方法,您可以更高效地管理和查看Docker容器中的日志文件,确保应用运行状态可控和可监测。
2551 28
|
存储 Oracle 关系型数据库
【赵渝强老师】MySQL InnoDB的数据文件与重做日志文件
本文介绍了MySQL InnoDB存储引擎中的数据文件和重做日志文件。数据文件包括`.ibd`和`ibdata`文件,用于存放InnoDB数据和索引。重做日志文件(redo log)确保数据的可靠性和事务的持久性,其大小和路径可由相关参数配置。文章还提供了视频讲解和示例代码。
470 11
【赵渝强老师】MySQL InnoDB的数据文件与重做日志文件
|
Ubuntu Linux Go
golang编译成Linux可运行文件
本文介绍了如何在 Linux 上编译和运行 Golang 程序,涵盖了本地编译和交叉编译的步骤。通过这些步骤,您可以轻松地将 Golang 程序编译成适合 Linux 平台的可执行文件,并在目标服务器上运行。掌握这些技巧,可以提高开发和部署 Golang 应用的效率。
3053 14
|
SQL Oracle 关系型数据库
【赵渝强老师】Oracle的控制文件与归档日志文件
本文介绍了Oracle数据库中的控制文件和归档日志文件。控制文件记录了数据库的物理结构信息,如数据库名、数据文件和联机日志文件的位置等。为了保护数据库,通常会进行控制文件的多路复用。归档日志文件是联机重做日志文件的副本,用于记录数据库的变更历史。文章还提供了相关SQL语句,帮助查看和设置数据库的日志模式。
407 1
【赵渝强老师】Oracle的控制文件与归档日志文件
|
存储 SQL 关系型数据库
【赵渝强老师】PostgreSQL的运行日志文件
PostgreSQL的物理存储结构包括数据文件、日志文件等。运行日志默认未开启,需配置`postgresql.conf`文件中的相关参数如`log_destination`、`log_directory`等,以记录数据库状态、错误信息等。示例配置中启用了CSV格式日志,便于管理和分析。通过创建表操作,可查看生成的日志文件,了解具体日志内容。
546 3
|
SQL 关系型数据库 MySQL
【赵渝强老师】MySQL的全量日志文件
MySQL全量日志记录所有操作的SQL语句,默认禁用。启用后,可通过`show variables like %general_log%检查状态,使用`set global general_log=ON`临时开启,执行查询并查看日志文件以追踪SQL执行详情。
325 4
|
Unix Linux Go
go进阶编程:Golang中的文件与文件夹操作指南
本文详细介绍了Golang中文件与文件夹的基本操作,包括读取、写入、创建、删除和遍历等。通过示例代码展示了如何使用`os`和`io/ioutil`包进行文件操作,并强调了错误处理、权限控制和路径问题的重要性。适合初学者和有经验的开发者参考。
330 4
|
Oracle 关系型数据库 数据库
【赵渝强老师】Oracle的参数文件与告警日志文件
本文介绍了Oracle数据库的参数文件和告警日志文件。参数文件分为初始化参数文件(PFile)和服务器端参数文件(SPFile),在数据库启动时读取并分配资源。告警日志文件记录了数据库的重要活动、错误和警告信息,帮助诊断问题。文中还提供了相关视频讲解和示例代码。
408 1
|
SQL 数据库
为什么 SQL 日志文件很大,我应该如何处理?
为什么 SQL 日志文件很大,我应该如何处理?

推荐镜像

更多