leetcode 316. remove-duplicate-letters 去除重复字母 python3

时间:2021-03-01

题目地址:https://leetcode-cn.com/problems/remove-duplicate-letters/ 【与1081一致】

题目难度:Medium

题目描述:

给你一个字符串 s ,请你去除字符串中重复的字母,使得每个字母只出现一次。需保证 返回结果的字典序最小(要求不能打乱其他字符的相对位置)。

注意:该题与 1081 https://leetcode-cn.com/problems/smallest-subsequence-of-distinct-characters 相同

示例 1:

输入:s = "bcabc"
输出:"abc"
示例 2:

输入:s = "cbacdcbc"
输出:"acdb"
 

提示:

1 <= s.length <= 104
s 由小写英文字母组成


思路1:细分问题,各个击破

关键点:

  • 去重--set()
  • 不能打乱字符的相对位置--栈结构
  • 保持字典序最小--判断一下是否需要删除之前比当前大的元素,类似单调栈,如果后边还有可以删除,否则跳过,使用collections.Counter会快一点

代码段1:通过

class Solution:
    def removeDuplicateLetters(self, s: str) -> str:
        # 栈
        stack = []
        # 字典
        instack = set(s)
        # 统计元素个数
        # count = {}
        # for i in s:
        #     count[i] = count.setdefault(i, 0) + 1
        count = collections.Counter(s)
        for i in s:
            count[i] -= 1
            if i in stack:
                continue
            while stack and stack[-1] > i and count[stack[-1]] > 0:
                instack.discard(stack.pop())
            stack.append(i)
            instack.add(i)           
        return ''.join(stack)

总结:

  1. 号称数组去重最难的一道题,真的不容易想出来,加油吧
标题“51单片机通过MPU6050-DMP获取姿态角例程”解析 “51单片机通过MPU6050-DMP获取姿态角例程”是一个基于51系列单片机(一种常见的8位微控制器)的程序示例,用于读取MPU6050传感器的数据,并通过其内置的数字运动处理器(DMP)计算设备的姿态角(如倾斜角度、旋转角度等)。MPU6050是一款集成三轴加速度计和三轴陀螺仪的六自由度传感器,广泛应用于运动控制和姿态检测领域。该例程利用MPU6050的DMP功能,由DMP处理复杂的运动学算法,例如姿态融合,将加速度计和陀螺仪的数据进行整合,从而提供稳定且实时的姿态估计,减轻主控MCU的计算负担。最终,姿态角数据通过LCD1602显示屏以字符形式可视化展示,为用户提供直观的反馈。 从标签“51单片机 6050”可知,该项目主要涉及51单片机和MPU6050传感器这两个关键硬件组件。51单片机基于8051内核,因编程简单、成本低而被广泛应用;MPU6050作为惯性测量单元(IMU),可测量设备的线性和角速度。文件名“51-DMP-NET”可能表示这是一个与51单片机及DMP相关的网络资源或代码库,其中可能包含C语言等适合51单片机的编程语言的源代码、配置文件、用户手册、示例程序,以及可能的调试工具或IDE项目文件。 实现该项目需以下步骤:首先是硬件连接,将51单片机与MPU6050通过I2C接口正确连接,同时将LCD1602连接到51单片机的串行数据线和控制线上;接着是初始化设置,配置51单片机的I/O端口,初始化I2C通信协议,设置MPU6050的工作模式和数据输出速率;然后是DMP配置,启用MPU6050的DMP功能,加载预编译的DMP固件,并设置DMP输出数据的中断;之后是数据读取,通过中断服务程序从DMP接收姿态角数据,数据通常以四元数或欧拉角形式呈现;再接着是数据显示,将姿态角数据转换为可读的度数格
MathorCup高校数学建模挑战赛是一项旨在提升学生数学应用、创新和团队协作能力的年度竞赛。参赛团队需在规定时间内解决实际问题,运用数学建模方法进行分析并提出解决方案。2021年第十一届比赛的D题就是一个典型例子。 MATLAB是解决这类问题的常用工具。它是一款强大的数值计算和编程软件,广泛应用于数学建模、数据分析和科学计算。MATLAB拥有丰富的函数库,涵盖线性代数、统计分析、优化算法、信号处理等多种数学操作,方便参赛者构建模型和实现算法。 在提供的文件列表中,有几个关键文件: d题论文(1).docx:这可能是参赛队伍对D题的解答报告,详细记录了他们对问题的理解、建模过程、求解方法和结果分析。 D_1.m、ratio.m、importfile.m、Untitled.m、changf.m、pailiezuhe.m、huitu.m:这些是MATLAB源代码文件,每个文件可能对应一个特定的计算步骤或功能。例如: D_1.m 可能是主要的建模代码; ratio.m 可能用于计算某种比例或比率; importfile.m 可能用于导入数据; Untitled.m 可能是未命名的脚本,包含临时或测试代码; changf.m 可能涉及函数变换; pailiezuhe.m 可能与矩阵的排列组合相关; huitu.m 可能用于绘制回路图或流程图。 matlab111.mat:这是一个MATLAB数据文件,存储了变量或矩阵等数据,可能用于后续计算或分析。 D-date.mat:这个文件可能包含与D题相关的特定日期数据,或是模拟过程中用到的时间序列数据。 从这些文件可以推测,参赛队伍可能利用MATLAB完成了数据预处理、模型构建、数值模拟和结果可视化等一系列工作。然而,具体的建模细节和解决方案需要查看解压后的文件内容才能深入了解。 在数学建模过程中,团队需深入理解问题本质,选择合适的数学模
### LLM在经济学领域的应用 大型语言模型(LLM)因其强大的自然语言处理能力,在多个学科领域得到了广泛应用,其中包括经济学。以下是几个主要的应用场景: #### 文献综述与科学合成 LLM 可以作为评估者参与科学研究的综合分析工作。通过训练 LLM 来理解复杂的经济理论和实证研究,它们能够帮助经济学家快速生成高质量的研究综述文档[^1]。这不仅提高了研究人员的工作效率,还可能揭示隐藏于大量数据中的模式。 #### 自动化报告撰写 利用 LLM 自动生成关于宏观经济指标变化趋势、市场动态以及政策影响等方面的定期更新报告成为现实。这种技术特别适用于金融机构需要频繁发布市场状况说明的情况。例如,可以设计一个系统让 LLM 定期读取最新的统计数据并据此编写详尽而专业的解读文章。 #### 数据提取与结构化 对于海量非结构化的经济相关文本资料(如新闻报道、政府公告),借助先进的 NLP 技术可以从这些资源里高效地抽取有用的信息,并将其转化为便于进一步分析的形式。此过程有助于构建更全面的数据集支持决策制定过程[^2]。 #### 教育辅助工具开发 创建互动式的在线学习平台,其中融入了由 LLM 驱动的问题解答功能,使得学生能够在任何时间获得即时反馈和支持。这种方式增强了用户体验的同时也促进了个性化教学的发展。 #### 政策模拟与预测建模 虽然传统上强化学习(RL)更多应用于游戏等领域,但其实RL同样可用于探索复杂系统的最优策略寻找问题解决途径。比如可以通过价值函数估计方法(Q-Learning)或者直接优化行动空间内的概率分布来指导特定条件下的最佳操作选择;这对于涉及众多变量相互作用关系密切的社会经济现象尤其有价值[^3]。 ```python import numpy as np from sklearn.model_selection import train_test_split from transformers import RobertaTokenizer, BertModel def preprocess_text(text_list): tokenizer = RobertaTokenizer.from_pretrained('roberta-base') encoded_input = tokenizer.batch_encode_plus( text_list, padding=True, truncation=True, max_length=512, return_tensors='pt' ) return encoded_input['input_ids'], encoded_input['attention_mask'] # Example usage of preprocessing function before feeding into BiLSTM model. texts = ["Example sentence one.", "Another example here."] input_ids, attention_masks = preprocess_text(texts) print(input_ids.shape, attention_masks.shape) ``` 上述代码片段展示了如何使用RoBERTa对输入文本进行编码准备送入后续分类网络层之前的操作步骤之一部分实现细节展示而已并非完整解决方案。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值