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

LeetCode:726. Number of Atoms - Python

问题描述给定一个化学式formula作为字符串返回每种原子的数量。原子总是以一个大写字母开始接着跟随0个或任意个小写字母表示原子的名字。如果数量大于 1原子后会跟着数字表示原子的数量。如果数量等于 1 则不会跟数字。例如H2O 和 H2O2 是可行的但 H1O2 这个表达是不可行的。两个化学式连在一起是新的化学式。例如 H2O2He3Mg4 也是化学式。一个括号中的化学式和数字可选择性添加也是化学式。例如 (H2O2) 和 (H2O2)3 是化学式。给定一个化学式输出所有原子的数量。格式为第一个按字典序原子的名子跟着它的数量如果数量大于 1然后是第二个原子的名字按字典序跟着它的数量如果数量大于 1以此类推。示例 1:输入: formula H2O 输出: H2O 解释: 原子的数量是 {H: 2, O: 1}。示例 2:输入: formula Mg(OH)2 输出: H2MgO2 解释: 原子的数量是 {H: 2, Mg: 1, O: 2}。示例 3:输入: formula K4(ON(SO3)2)2 输出: K4N2O14S4 解释: 原子的数量是 {K: 4, N: 2, O: 14, S: 4}。注意:所有原子的第一个字母为大写剩余字母都是小写。formula的长度在[1, 1000]之间。formula只包含字母、数字和圆括号并且题目中给定的是合法的化学式。问题分析很显然这是一个递归题目可以使用递归实现、栈实现还有大神用正则来解决的具体的大家可以去网上搜索。现在参考了cnkyzz大神的程序进行一下学习总结。个人偏好还是非递归较好感觉还是for循环和栈跑的快哈。其基本思路是1从右向左遍历 formula 字符串这样处理的好处是可以比较方便推出字符原子的系数 coeff。2遇到数字时则记录在变量cnt中其中i用于记录数字的位数原子的系数不仅仅是个位数的。3遇到符号)时则把当前的数字cnt压栈即把符号)右边的数字进栈。4遇到符号(时则把当前栈顶原子出栈即把相对应的)右边的数字出栈。5遇到大写字母时把当前的原子变量elem放入字典注意个数的计算要考虑之前是否已经存在。6遇到小写字母时保留到当前原子变量elem中。7最后字典排序按照要求输出。Python3实现注collections.defaultdict(int)表示创建一个类似dictionary对象里面任何的values都是int的实例而且就算是一个不存在的key, d[key] 也有一个默认值这个默认值是int类型且默认值为 0.import collections class Solution: def countOfAtoms(self, formula): dic, coeff, stack, elem, cnt, i collections.defaultdict(int), 1, [], , 0, 0 for c in formula[::-1]: if c.isdigit(): cnt int(c) * (10 ** i) # 获取当前数子 i 1 # 当前数字的位数 elif c ): # 当前数字入栈并更新当前原子的系数 num cnt if cnt ! 0 else 1 # # 没有数字默认是 1 stack.append(num) coeff * num i cnt 0 elif c (: # 出栈并更新当前系数相除哦 coeff // stack.pop() i cnt 0 elif c.isupper(): # 原子写入字典 elem c elem dic[elem] (cnt or 1) * coeff # 当前数字 * 当前的系数 之前已经存在的个数。 elem i cnt 0 elif c.islower(): # 拼接保留到 elem 中 elem c elem return .join(k str(v 1 and v or ) for k, v in sorted(dic.items())) if __name__ __main__: solu Solution() formula K4(ON(SO3)2)2 print(formula:, K4(ON(SO3)2)2) print(solu.countOfAtoms(formula))欢迎指正哦。

相关文章:

LeetCode:726. Number of Atoms - Python

问题描述: 给定一个化学式formula(作为字符串),返回每种原子的数量。 原子总是以一个大写字母开始,接着跟随0个或任意个小写字母,表示原子的名字。 如果数量大于 1,原子后会跟着数字表示原子的…...

gitmaven命令

git命令git diff #查看差异git push origin feature/recover_pwd_bug #推送 git commit -m ‘perf #重置密码逻辑优化git log #查看提交版本号 git reset --hard <版本号> #本地回退到相应的版本 git push origin <分支名> --force #远端的仓库也回退到相应的版本…...

Keil5开发环境为STM32移植水墨江南模型生成的精简字库

Keil5开发环境为STM32移植水墨江南模型生成的精简字库 最近在做一个有点意思的硬件项目&#xff0c;想在一块小小的OLED屏幕上&#xff0c;显示一些有中国风韵味的汉字&#xff0c;比如“风”、“雅”、“颂”这类字。直接用系统自带的宋体、黑体&#xff0c;总觉得差点意思&a…...

TranslucentTB终极指南:3分钟打造Windows透明任务栏的完整教程

TranslucentTB终极指南&#xff1a;3分钟打造Windows透明任务栏的完整教程 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB 你是否厌倦了W…...

告别手动抓包!用Playwright+Python自动嗅探网页M3U8视频流(附完整代码)

自动化嗅探网页M3U8视频流&#xff1a;Playwright与Python的完美结合 在当今数字化时代&#xff0c;视频内容已成为网络信息的主要载体之一。对于开发者而言&#xff0c;如何高效地从网页中提取视频资源一直是个值得探讨的话题。传统的手动F12抓包方式不仅效率低下&#xff0c;…...

文墨共鸣模型与SolidWorks设计文档交互:基于文本的产品设计需求分析

文墨共鸣模型与SolidWorks设计文档交互&#xff1a;基于文本的产品设计需求分析 你有没有过这样的经历&#xff1f;脑子里有一个新产品的绝妙想法&#xff0c;或者客户给了一堆模糊的功能描述&#xff0c;但当你坐在SolidWorks面前&#xff0c;准备把这些想法变成三维模型时&a…...

实战踩坑记录:用Cesium控制无人机飞行轨迹,Entity的HPR姿态更新那些‘坑’

实战踩坑记录&#xff1a;用Cesium控制无人机飞行轨迹&#xff0c;Entity的HPR姿态更新那些‘坑’ 在数字孪生和飞行模拟领域&#xff0c;精确控制无人机或其他飞行器的三维姿态一直是个技术难点。最近接手了一个无人机航迹回放项目&#xff0c;需要根据预设航点动态调整无人机…...

Kandinsky-5.0-I2V-Lite-5s部署教程:Ubuntu 22.04 LTS环境完整安装与验证

Kandinsky-5.0-I2V-Lite-5s部署教程&#xff1a;Ubuntu 22.04 LTS环境完整安装与验证 1. 环境准备与快速部署 Kandinsky-5.0-I2V-Lite-5s是一款轻量级图生视频模型&#xff0c;能够将静态图片转换为5秒左右的短视频。在开始之前&#xff0c;请确保你的系统满足以下要求&#…...

RexUniNLU教育场景实战:学生问答意图识别+知识点槽位定位效果展示

RexUniNLU教育场景实战&#xff1a;学生问答意图识别知识点槽位定位效果展示 1. 引言&#xff1a;当AI老师遇上“十万个为什么” 想象一下这个场景&#xff1a;一个学生正在使用在线学习平台&#xff0c;他输入了一个问题&#xff1a;“老师&#xff0c;为什么三角形的内角和…...

RTX4090D显卡性能释放:PyTorch 2.8镜像在文生视频任务中的实战表现

RTX4090D显卡性能释放&#xff1a;PyTorch 2.8镜像在文生视频任务中的实战表现 1. 硬件与镜像环境概览 1.1 RTX 4090D显卡的独特优势 RTX 4090D作为NVIDIA最新一代消费级旗舰显卡&#xff0c;在深度学习领域展现出非凡潜力。与标准版4090相比&#xff0c;4090D在保持相同24G…...

提升无线传输性能:手把手教你优化Si4463的Data Rate配置与SPI通信稳定性

突破Si4463无线传输瓶颈&#xff1a;从寄存器配置到SPI时序的全链路优化实战 当你的无线模块能够通信但性能不尽如人意时&#xff0c;就像驾驶一辆引擎未调校的跑车——它能跑&#xff0c;但永远达不到理想的极速。Si4463作为工业级无线收发芯片&#xff0c;其默认配置往往无法…...

实测科哥版HeyGem稳定性:文件校验、中断恢复、显存保护全解析

实测科哥版HeyGem稳定性&#xff1a;文件校验、中断恢复、显存保护全解析 1. 引言&#xff1a;为什么稳定性对数字人视频生成如此重要 在数字人视频生成领域&#xff0c;我们常常关注生成效果和速度&#xff0c;却容易忽视一个更基础的问题——稳定性。想象一下&#xff0c;当…...

Netskope 安全与网络重塑人工智能

从移动和云计算的进步到人工智能的指数级增长&#xff0c;网络和安全团队都在努力寻找正确的方法&#xff0c;以保持领先地位。这正是 Netskope 创立的初衷&#xff0c;也是我们不断创新、以正确的方式构建技术和业务的原因&#xff0c;从而帮助我们的客户更轻松地应对挑战。在…...

PyTorch-2.x-Universal-Dev-v1.0镜像详解:预装库、国内源、GPU验证全攻略

PyTorch-2.x-Universal-Dev-v1.0镜像详解&#xff1a;预装库、国内源、GPU验证全攻略 1. 镜像概述与核心优势 PyTorch-2.x-Universal-Dev-v1.0镜像是一个专为深度学习开发者打造的高效开发环境。它基于官方PyTorch底包构建&#xff0c;经过精心优化和配置&#xff0c;旨在解决…...

实测cv_resnet18_ocr-detection:电商截图、票据文字识别效果超预期

实测cv_resnet18_ocr-detection&#xff1a;电商截图、票据文字识别效果超预期 1. 开箱即用的OCR文字检测体验 当我第一次打开cv_resnet18_ocr-detection的WebUI界面时&#xff0c;紫蓝渐变的现代化设计立刻吸引了我的注意。这个由科哥开发的OCR文字检测模型&#xff0c;承诺…...

DeepChat行业应用:生物医药文献摘要→靶点关系提取→实验设计建议

DeepChat行业应用&#xff1a;生物医药文献摘要→靶点关系提取→实验设计建议 1. 项目背景与核心价值 在生物医药研发领域&#xff0c;研究人员每天需要阅读大量文献&#xff0c;从海量信息中提取关键发现、识别药物靶点关系&#xff0c;并设计后续实验方案。传统的人工处理方…...

多智能体强化学习调参新思路:为什么你的MAPPO在离散环境不收敛?

多智能体强化学习调参新思路&#xff1a;为什么你的MAPPO在离散环境不收敛&#xff1f; 当你在连续环境中轻松实现MAPPO&#xff08;Multi-Agent Proximal Policy Optimization&#xff09;的收敛后&#xff0c;转向离散环境时却遭遇了令人沮丧的失败——这不是个例。许多中高级…...

霜儿-汉服-造相Z-Turbo科研辅助:使用LaTeX撰写包含AI生成图像的学术论文

霜儿-汉服-造相Z-Turbo科研辅助&#xff1a;使用LaTeX撰写包含AI生成图像的学术论文 最近在帮一位研究传统服饰的朋友整理论文&#xff0c;遇到了一个挺有意思的问题。他们需要大量汉服的结构示意图和纹样分析图&#xff0c;但手绘耗时&#xff0c;找现成资料又很难完全匹配研…...

Qwen3.5-9B微调实践:优化OpenClaw的邮件处理技能

Qwen3.5-9B微调实践&#xff1a;优化OpenClaw的邮件处理技能 1. 为什么需要定制邮件处理技能 去年夏天&#xff0c;我被堆积如山的客户咨询邮件淹没了。每天早上一打开邮箱&#xff0c;上百封未读邮件像潮水一样涌来&#xff0c;手动分类、回复、归档的效率低得令人崩溃。作为…...

Phi-4-mini-reasoning部署教程:SSL证书配置实现https安全访问Web界面

Phi-4-mini-reasoning部署教程&#xff1a;SSL证书配置实现https安全访问Web界面 1. 环境准备 在开始配置SSL证书前&#xff0c;请确保您已经完成以下准备工作&#xff1a; 已部署Phi-4-mini-reasoning模型并正常运行拥有服务器管理员权限已获取有效的域名&#xff08;可以是…...

为什么Restormer能在图像修复任务上超越CNN?深入拆解它的三个核心设计

为什么Restormer能在图像修复任务上超越CNN&#xff1f;深入拆解它的三个核心设计 在图像修复领域&#xff0c;从早期的传统滤波方法到后来的深度卷积网络&#xff0c;技术迭代始终围绕着一个核心矛盾&#xff1a;如何平衡局部细节修复与全局结构一致性。当U-Net等CNN架构在去噪…...

如何用 Claude Code 快速完善接口文档和注释

在大多数项目中&#xff0c;代码本身并不是最大的问题。 真正让人头疼的是&#xff1a;没有文档&#xff0c;没有注释。常见情况包括&#xff1a; 接口没有说明&#xff0c;不知道怎么用方法没有注释&#xff0c;看不懂意图参数含义不清晰&#xff0c;只能靠猜老项目完全没有文…...

避免数据丢失!制作Win10启动盘前必须知道的U盘备份技巧

避免数据丢失&#xff01;制作Win10启动盘前必须知道的U盘备份技巧 在数字化时代&#xff0c;U盘不仅是便携存储工具&#xff0c;更是系统维护的重要载体。当我们需要为电脑安装或重装Windows 10系统时&#xff0c;制作启动盘是最常用的方法之一。然而&#xff0c;许多用户在操…...

Windows系统安装OpenClaw详解:千问3.5-9B模型联调避坑指南

Windows系统安装OpenClaw详解&#xff1a;千问3.5-9B模型联调避坑指南 1. 为什么选择OpenClaw千问3.5-9B组合 去年我在尝试自动化办公流程时&#xff0c;发现市面上的RPA工具要么功能臃肿&#xff0c;要么需要将敏感数据上传到云端。直到遇到OpenClaw这个开源框架&#xff0c…...

内网福音:手把手教你用Docker离线搞定Jitsi-Meet视频会议(附完整镜像包下载)

企业级内网视频会议解决方案&#xff1a;Docker化Jitsi-Meet离线部署全指南 在高度封闭的企业内网环境中部署视频会议系统一直是个技术难题。军工单位、金融机构核心网络、科研实验室等场景对数据安全有着近乎苛刻的要求&#xff0c;传统的SaaS视频会议方案无法满足其网络隔离需…...

Qwen2.5-72B大模型实战指南:GPTQ-Int4量化+128K上下文+Chainlit可视化交互全流程

Qwen2.5-72B大模型实战指南&#xff1a;GPTQ-Int4量化128K上下文Chainlit可视化交互全流程 1. 模型简介 Qwen2.5-72B-Instruct-GPTQ-Int4是Qwen大型语言模型系列的最新版本&#xff0c;代表了当前开源大模型领域的顶尖水平。这个72.7B参数的模型经过GPTQ 4-bit量化处理&#…...

别再只盯着神经网络了!聊聊AI的另外两条路:专家系统和强化学习怎么用

当深度学习不是最优解&#xff1a;专家系统与强化学习的实战突围指南 在科技媒体的狂轰滥炸下&#xff0c;神经网络几乎成了人工智能的代名词。但当我们真正将AI技术落地到企业级场景时&#xff0c;往往会发现&#xff1a;那些需要处理小样本数据、要求决策过程透明可解释、或者…...

Comsol水力压裂:考虑流固耦合损伤及热流固耦合的裂缝扩展模型

comsol水力压裂&#xff0c;裂缝扩展模型流固耦合损伤和热流固耦合损伤 在这个模型里面考虑了温度场、应力场、压力场和损伤场&#xff0c;采用的是Comsol内置的接口建模 整个模型呈正方形&#xff0c;内部开一个圆孔 在圆孔内壁施加高压低温流体&#xff0c;模型外边界在这个模…...

电机控制死区补偿模块资料:原理与目标

电机控制死区补偿模块资料 原理&#xff1a;由于逆变器自身的非线性及IGBT等功率管的Ton&#xff0c;Toff等参数是随着电流大小变化的&#xff0c;需要首先测量不同电流下实际的死区时间&#xff0c;然后根据当前运行工况下的三相电流&#xff0c;根据电流进行查表计算出合适的…...

LabVIEW 多列列表框操作库 可直,超快 多列列表框功能: 1.创建列表框类 2.插入行:...

LabVIEW 多列列表框操作库 可直&#xff0c;超快 多列列表框功能&#xff1a; 1.创建列表框类 2.插入行&#xff1a;可自动补足空白行 3.替换单元格&#xff1a;根据行列替换单元格 列自动调整宽度 5.设置列内容对齐方式&#xff0c;靠左对齐、靠右对齐、居中对齐 6.清除所有内…...