当前位置: 首页 > news >正文

谷歌优化招聘seo培训资料

谷歌优化招聘,seo培训资料,免费网站模板库,女装商城网站建设【LeetCode】726、原子的数量 文章目录 一、递归: 嵌套类问题1.1 递归: 嵌套类问题 二、多语言解法 一、递归: 嵌套类问题 1.1 递归: 嵌套类问题 遇到 ( 括号, 则递归计算子问题 遇到大写字母, 或遇到 ( 括号, 则清算历史, 并开始新的记录 记录由两部分组成: 大写字母开头的 …

【LeetCode】726、原子的数量

文章目录

  • 一、递归: 嵌套类问题
    • 1.1 递归: 嵌套类问题
  • 二、多语言解法


一、递归: 嵌套类问题

1.1 递归: 嵌套类问题

遇到 ( 括号, 则递归计算子问题
遇到大写字母, 或遇到 ( 括号, 则清算历史, 并开始新的记录
记录由两部分组成: 大写字母开头的 或 子函数递归的结果

// go
func countOfAtoms(s string) string {where := 0 // 全局变量, 记录 括号内递归 的终止位置, 用于继续从此计算var f func(i int) map[string]int // 输入 s 的下标, 输出 哈希表, 计算括号内的 原子统计f = func(i int) map[string]int {m := map[string]int{}name := "" // 字母历史, 如 Mg4 的 Mgpre := map[string]int{} // 哈希表历史, 如 (SO3)2 的 SO3cnt := 0 // 次数, 如 Mg4 的 4, 如 (SO3)2 的 2for i < len(s) && s[i] != ')' {c := s[i]if (c >= 'A' && c <= 'Z') || c == '(' { // 需要清算历史记录, 并开始新的记录// 清算历史记录fill(m, name, pre, cnt)name = ""clear(pre)cnt = 0// 开始新的记录if c >= 'A' && c <= 'Z' { // 大写字母name += string(c) // 通过字母得到记录i++} else { // 左括号 (pre = f(i+1) // 通过递归得到记录i = where + 1 // 从递归结束的位置, 继续遍历}} else if c >= 'a' && c <= 'z' {name += string(c)i++} else { // 数字 c >= '0' && c <= '9'cnt = cnt * 10 + int(c - '0')i++}}fill(m, name, pre, cnt) // 最后一次, 比如 H2Mg3, 当遍历到整个字符串结尾时 需要触发 把 最后的 Mg3 放入结果where = i // 标记此递归的结束位置, 后续顶层函数继续从 where + 1 处遍历, 否则肯定死循环return m}m := f(0)return format(m)
}// name 重复 cnt 次, 或 pre 重复 cnt 次, 添加到 m 中
func fill(m map[string]int, name string, pre map[string]int, cnt int) {if cnt == 0 {cnt = 1} // 如 HMF 则 遍历到 M 时, 需清算 H, 但此时 cnt 为 0, 其实是因为省略了 H1 为 H, 所以需要当 cnt == 0 时把 cnt 置为 1if len(name) > 0 { // 是 name 的历史m[name]+=cnt} else { // 是 pre 的历史for atom, count := range pre {m[atom]+=count*cnt}}
}func format(m map[string]int) (ans string) {sli := slices.Collect(maps.Keys(m)) // 无需哈希表, 收集 keysslices.Sort(sli) // 排序 keys, 从而得到有序哈希表for _, atom := range sli {cnt := m[atom]ans += atomif cnt > 1 {ans += strconv.Itoa(cnt)}}return
}

参考左神: 嵌套类问题 递归思路

二、多语言解法

C p p / G o / P y t h o n / R u s t / J s / T s Cpp/Go/Python/Rust/Js/Ts Cpp/Go/Python/Rust/Js/Ts

// cpp
// go 同上
# python
// rust
// js
// ts
http://www.yayakq.cn/news/879660/

相关文章:

  • 三站合一的网站怎么做网页设计与网站建设 倪宝童
  • 网站关键词排名分析网站运营团队
  • 宿舍管理网站建设贵州建筑人才网
  • wordpress新建页面有什么作用深圳快速seo排名优化
  • 著名网站织梦域名查询官网
  • 网站建设高端手机网页游戏排行榜前十名
  • 别人恶意点击我们竞价网站网站销售流程
  • 网站建设服务 行业代码江苏网站建设公司排名
  • 网站网页?问?上海专业网站建站品牌
  • 网站建设科目wordpress类目权限
  • 沁阳企业自助建站网站建设 客户定位
  • 网站做盗版视频赚钱吗跨境电商快递怎么发到国外
  • 免费asp网站后台管理系统创网
  • 国外家具设计网站阜阳市城乡建设网站
  • 安顺北京网站建设朋友圈广告推广平台
  • 山西网站开发建设一般网站建设需求有哪些
  • 天河做网站要多少钱英文wordpress SEO
  • 济宁网站建设 智雅wordpress 无法添加媒体
  • 哪个公司的app软件定制长沙推广优化公司
  • 宁波网站建设制作公司排名界首做网站
  • 做塑料哪个网站好卖文具做网站好还是做电商好
  • 网站首页的名字通常是做网站的费用记哪个会计科目
  • 海口可信的海南网站建设沧浪设计网站公司
  • 建设银行网站登录不上广州网络推广公司有哪些
  • 在哪家网站做外贸比较好网站做系统下载
  • 网站建设汇报方案ppt模板德州鲁企动力网站优化中心
  • 前端工程师是做网站网站建设有几块
  • 重庆哪里做网站定制网站建设的释义
  • 鹿泉微信网站建设网站域名com和cn的差别在哪里
  • 网站建站 宝网站建设信息表