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

Python每日一练(20230302)

目录

1. 字符串统计

2. 合并两个有序链表

3. 下一个排列

附录

Python字典内置方法

其它


1. 字符串统计

从键盘输入一个包含有英文字母、数字、空格和其它字符的字符串,并分别实现下面的功能:统计字符串中出现2次的英文字母(区分大小写) 统计字符串中出现n次的数字,n从键盘输入。

代码: 

#第一题
s=input('input a string:')
dict1={}
for c in s:if c.isalpha():if c not in dict1.keys():dict1[c] = 1else:dict1[c] += 1
for key in dict1.keys():if dict1[key]==2:print(key)#第二题
s=input('input a string:')
n=int(input('input a n:'))
dict2={}
for c in s:if c.isdigit(): #只判断数字if c not in dict2.keys():dict2[c] = 1else:dict2[c] += 1
for key in dict2.keys():if dict2[key]==n:print(key)

2. 合并两个有序链表

将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 

示例 1:

输入:l1 = [1,2,4], l2 = [1,3,4]
输出:[1,1,2,3,4,4]

示例 2:

输入:l1 = [], l2 = []
输出:[]

示例 3:

输入:l1 = [], l2 = [0]
输出:[0]

提示:

  • 两个链表的节点数目范围是 [0, 50]
  • -100 <= Node.val <= 100
  • l1 和 l2 均按 非递减顺序 排列

代码:

class ListNode:def __init__(self, val=0, next=None):self.val = valself.next = nextclass LinkList:def __init__(self):self.head=Nonedef initList(self, data):self.head = ListNode(data[0])r=self.headp = self.headfor i in data[1:]:node = ListNode(i)p.next = nodep = p.nextreturn rdef    convert_list(self,head):ret = []if head == None:returnnode = headwhile node != None:ret.append(node.val)node = node.nextreturn retclass Solution:def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode:h = ListNode(0, None)p = hwhile l1 and l2:if l1.val < l2.val:p.next = l1p = l1l1 = l1.nextelse:p.next = l2p = l2l2 = l2.nextif l1:p.next = l1else:p.next = l2return h.next# %%
l = LinkList()
list1 = [1,2,4]
list2 = [1,3,4]
l1 = l.initList(list1)
l2 = l.initList(list2)
s = Solution()
print(l.convert_list(s.mergeTwoLists(l1, l2)))

3. 下一个排列

实现获取 下一个排列 的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。

如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。

必须 原地 修改,只允许使用额外常数空间。

示例 1:

输入:
nums = [1, 2, 3]
输出:
[1, 3, 2]

示例 2:

输入:
nums = [3, 2, 1]
输出:
[1, 2, 3]

示例 3:

输入:
nums = [1, 1, 5]
输出:
[1, 5, 1]

示例 4:

输入:
nums1 = [1]
输出:
[1]

代码: 

class Solution(object):def nextPermutation(self, nums):ls = len(nums)if ls <= 1:returnpair = []for i in range(ls):for j in range(i + 1, ls):if nums[i] < nums[j]:pair.append([i,j])pos = 0if len(pair) > 0:self.swap(nums, pair[-1][0], pair[-1][1])pos = pair[-1][0] + 1for i in range(pos, ls):for j in range(i + 1, ls):if nums[i] > nums[j]:self.swap(nums, i, j)return numsdef swap(self, nums, index1, index2):if index1 == index2:returnnums[index1], nums[index2] = nums[index2], nums[index1]# %%
s = Solution()
print(s.nextPermutation(nums = [1,2,3]))
print(s.nextPermutation(nums = [3,2,1]))
print(s.nextPermutation(nums = [1,1,5]))
print(s.nextPermutation(nums = [1]))#注:长度为1的列表返回1,这个问题原题所附代码没有考虑

附录

Python字典内置方法

dict.setdefault(key, default=None) 和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default

dict.clear() 删除字典内所有元素

popitem() 返回并删除字典中的最后一对键和值。

pop(key[,default]) 删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。

del dic

dict.update(dict2) 把字典dict2的键/值对更新到dict里

dict.get(key, default=None) 返回指定键的值,如果值不在字典中返回default值

dict.keys() 以列表返回一个字典所有的键

dict.values() 以列表返回字典中的所有值

dict.items() 以列表返回可遍历的(键, 值) 元组数组

其它

dict.copy() 返回一个字典的浅复制

dict.fromkeys(seq[, val]) 创建一个新字典,以序列 seq 中元素做字典的键,val 为字典所有键对应的初始值

dict.has_key(key) 如果键在字典dict里返回true,否则返回false


对于第一题可以用dict.get()优化: 

get(self, key, default=None, /) 
Return the value for key if key is in the dictionary, else default.

#第一题
s=input('input a string:')
dict1={}
for c in s:if c.isalpha():dict1[c] = dict1.get(c, 0) + 1for key in dict1.keys():if dict1[key]==2:print(key)#第二题
s=input('input a string:')
n=int(input('input a n:'))
dict2={}
for c in s:if c.isdigit(): #只判断数字dict2[c] = dict2.get(c, 0) + 1for key in dict2.keys():if dict2[key]==n:print(key)

相关文章:

Python每日一练(20230302)

目录 1. 字符串统计 2. 合并两个有序链表 3. 下一个排列 附录 Python字典内置方法 增 删 改 查 其它 1. 字符串统计 从键盘输入一个包含有英文字母、数字、空格和其它字符的字符串&#xff0c;并分别实现下面的功能&#xff1a;统计字符串中出现2次的英文字母&#…...

Numpy课后练习

Numpy课后练习 文章目录 Numpy课后练习一、前言二、题目及答案一、前言 答案仅供参考,谢谢大家! 二、题目及答案 导入Numpy包并设置随机数种子为666 import numpy as np np.random.seed(666)创建并输出一个包含12个元素的随机整数数组r1,元素的取值范围在[30,100)之间 r1 …...

动态规划dp中的子序列、子数组问题总结

目录 定义dp数组 初始化dp数组 状态转移方程 最终结果 题目 定义dp数组 这类问题的共性是会提供两个数组,寻找他们共同的子序列、子数组。设第一个数组为s,第二个数组为t。则可以设二维dp数组,其大小为len(s + 1)*len(t + 1) dp[i][j]表示 s 前 i 个长度,...

Zookeeper3.5.7版本——Zookeeper的概述、工作机制、特点、数据结构及应用场景

目录一、Zookeeper的概述二、Zookeeper的工作机制三、Zookeeper的特点四、Zookeeper的数据结构五、Zookeeper的应用场景5.1、统一命名服务5.2、统一配置管理5.3、统一集群管理5.4、服务器动态上下线5.5、软负载均衡一、Zookeeper的概述 Zookeeper 是一个开源的分布式的&#x…...

安卓逆向学习及APK抓包(二)--Google Pixel一代手机的ROOT刷入面具

注意:本文仅作参考勿跟操作&#xff0c;root需谨慎&#xff0c;本次测试用的N手Pixel&#xff0c;因参考本文将真机刷成板砖造成的损失与本人无关 1 Google Pixel介绍 1.1手机 google Pixel 在手机选择上&#xff0c;优先选择谷歌系列手机&#xff0c;Nexus和Pixel系列&…...

线程池的基本认识与使用

线程池的基本认识与使用线程池线程池工作原理&#xff1a;优点&#xff1a;传统的创建线程方式线程池创建线程使用线程池 池化思想&#xff1a;线程池、字符串常量池、数据库连接池可以提高资源的利用率 线程池工作原理&#xff1a; 预先创建多个线程对象 放入线程池种&#…...

小家电品牌私域增长解决方案来了

小家电品牌的私域优势 01、行业线上化发展程度高 相对于大家电动辄上千上万元的价格&#xff0c;小家电的客单价较低。而且与大家电偏刚需属性不同的是&#xff0c;小家电的消费需求侧重场景化&#xff0c;用户希望通过购买小家电来提高自身的生活品质。这就决定了用户的决策…...

什么是让ChatGPT爆火的大语言模型(LLM)

什么是让ChatGPT爆火的大语言模型(LLM) 更多精彩内容: https://www.nvidia.cn/gtc-global/?ncidref-dev-876561 文章目录什么是让ChatGPT爆火的大语言模型(LLM)大型语言模型有什么用&#xff1f;大型语言模型如何工作&#xff1f;大型语言模型的热门应用在哪里可以找到大型语言…...

【监控】Linux部署postgres_exporter及PG配置(非Docker)

目录一、下载及部署二、postgres_exporter配置1. 停止脚本stop.sh2. 启动脚本start.sh3. queries.yaml三、PostgreSQL数据库配置1. 修改postgresql.conf配置文件2. 创建用户、表、扩展等四、参考一、下载及部署 下载地址 选一个amd64下载 上传至服务器&#xff0c;解压 tax…...

基于Java+SpringBoot+Vue+Uniapp(有教程)前后端分离健身预约系统设计与实现

博主介绍&#xff1a;✌全网粉丝3W&#xff0c;全栈开发工程师&#xff0c;从事多年软件开发&#xff0c;在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战✌ 博主作品&#xff1a;《微服务实战》专栏是本人的实战经验总结&#xff0c;《Spring家族及…...

【2023】DevOps、SRE、运维开发面试宝典之Redis相关面试题

文章目录 1、redis主从复制原理2、redis哨兵模式的原理3、reids集群原理4、Redis 哈希表进行的触发时机是什么?5、Redis 的 RDB 和 AOF 机制各自的优缺点是什么?这两种机制是否可以混合使用?6、Redis 经常被称为单线程的系统,你如何理解 Redis 的单线程模型7、redis 的事务…...

十五、MyBatis使用PageHelper

1.limit分页 limit分页原理 mysql的limit后面两个数字&#xff1a; 第一个数字&#xff1a;startIndex&#xff08;起始下标。下标从0开始。&#xff09; 第二个数字&#xff1a;pageSize&#xff08;每页显示的记录条数&#xff09; 假设已知页码pageNum&#xff0c;还有每页…...

【MySQL】B+ 树索引

一、索引是什么 &#xff1f; 为什么需要索引 &#xff1f; 索引就是目录&#xff0c;目录就是索引。 索引从 InnoDB 存储引擎数据存储结构上来看&#xff0c;就是为各个页建立的目录。保证我们在查询时&#xff0c;可以通过二分法快速定位到页&#xff0c;再在页内通过二分法…...

Android Gradle Plugin Version 和 Gradle Version 的对应关系

官网参考 以下是插件版本和Gradle 版本对应关系&#xff1a; 插件版本所需的最低 Gradle 版本Android Gradle Plugin VersionGradle Version1.0.0 - 1.1.32.2.1 - 2.31.2.0 - 1.3.12.2.1 - 2.91.5.02.2.1 - 2.132.0.0 - 2.1.22.10 - 2.132.1.3 - 2.2.32.14.1 - 3.52.3.03.33.0…...

更多单词/词组/短语补充和总结(二)

auto 美 /[ˈɔːtoʊ] n.汽车adj.与汽车有关的&#xff0c;汽车的。不要记成“自动的” mobile 美 /[ˈmoʊbl] adj.可移动的;流动的;不要记成“手机”&#xff0c;手机是mobile phone automobile 美 /[ˈɔːtəməbiːl] n.汽车adj.自动的 automatic 美 /[ˌɔːtəˈmtɪk]…...

HEC-HMS和HEC-RAS快速入门、防洪评价报告编制及洪水建模、洪水危险性评价等应用

目录 ①HEC-RAS一维、二维建模方法及实践技术应用 ②HEC-HMS水文模型实践技术应用 ③新导则下的防洪评价报告编制方法及洪水建模实践技术应用 ④基于ArcGIS水文分析、HEC-RAS模拟技术在洪水危险性及风险评估 ⑤山洪径流过程模拟及洪水危险性评价 ①HEC-RAS一维、二维建模方…...

全面了解 B 端产品设计 — 基础扫盲篇

在今天,互联网的影响力与作用与日俱增,除了我们日常生活领域的改变以外,对于商业领域的渗透也见效颇丰。 越来越多的企业开始使用数字化的解决方案来助力企业发展,包括日常管理、运营、统计等等。或者通过互联网的方式开发出新的业务形态,进行产业升级,如这几年风头正劲的…...

顺序表(增删查改)

目录一、什么是顺序表二、顺序表的增删查改2.1 结构体的声明2.2 顺序表的初始化2.3 顺序表检查容量2.4 顺序表尾部插入数据2.5 顺序表头部插入数据2.6 顺序表尾部删除数据2.7 顺序表头部删除数据2.8 顺序表查找数据2.9 顺序表任意位置插入数据2.10 顺序表任意位置删除数据2.11 …...

一款优秀的低代码开发平台是什么样的?

目录 一、一款优秀的低代码平台应该是什么样的&#xff1f; 二、低代码核心能力 01、全栈可视化编程&#xff1a; 02、全生命周期管理&#xff1a; 03、低代码扩展能力&#xff1a; 三、小结 一、一款优秀的低代码平台应该是什么样的&#xff1f; 从企业角度来说&#x…...

ElasticSearch 学习笔记总结(四)

文章目录一、ES继承 Spring Data 框架二、SpringData 功能集成三、ES SpringData 文档搜索四、ES 优化 硬件选择五、ES 优化 分片策略六、ES 优化 路由选择七、ES 优化 写入速度优化七、ES 优化 内存设置八、ES 优化 重要配置一、ES继承 Spring Data 框架 Spring Data 是一个用…...

PX4倾转垂起固定翼混控配置与硬件适配实战

1. PX4倾转垂起固定翼的核心概念解析 第一次接触倾转垂起固定翼的朋友可能会被这个名词吓到&#xff0c;其实它的原理并不复杂。简单来说&#xff0c;这是一种既能像多旋翼一样垂直起降&#xff0c;又能像固定翼飞机一样高效巡航的混合飞行器。我经手过的项目中&#xff0c;这种…...

Windows XP图标主题完整指南:轻松为Linux桌面注入经典怀旧风格

Windows XP图标主题完整指南&#xff1a;轻松为Linux桌面注入经典怀旧风格 【免费下载链接】Windows-XP Remake of classic YlmfOS theme with some mods for icons to scale right 项目地址: https://gitcode.com/gh_mirrors/win/Windows-XP 还在怀念Windows XP那个经典…...

Gemini3.1Pro:商业分析框架搭建神器

做咨询的人都知道&#xff0c;真正难的从来不是“找到信息”&#xff0c;而是“把信息组织成框架”。 很多商业分析问题看起来复杂&#xff0c;本质上都是在有限时间内&#xff0c;把零散材料整理成一个能支撑判断的逻辑结构。如果你经常做行业分析、竞品分析、市场调研、经营诊…...

ARM GICv3虚拟中断处理:GICV_IAR寄存器详解

1. GICV_IAR寄存器概述GICV_IAR&#xff08;Virtual Machine Interrupt Acknowledge Register&#xff09;是ARM GICv3架构中虚拟CPU接口的关键寄存器&#xff0c;主要用于虚拟机环境下的中断确认机制。当虚拟中断信号到达处理器时&#xff0c;通过读取该寄存器可以获取当前最高…...

基于MCP协议构建技术生态分析工具:架构设计与工程实践

1. 项目概述&#xff1a;一个技术生态分析工具的诞生最近在折腾一个挺有意思的东西&#xff0c;一个叫apifyforge/tech-ecosystem-analysis-mcp的项目。光看这个名字&#xff0c;可能有点唬人&#xff0c;但说白了&#xff0c;它就是一个用来“解剖”技术生态系统的工具。想象一…...

WeChatMsg:微信聊天记录本地化解析与多格式导出技术方案

WeChatMsg&#xff1a;微信聊天记录本地化解析与多格式导出技术方案 【免费下载链接】WeChatMsg 提取微信聊天记录&#xff0c;将其导出成HTML、Word、CSV文档永久保存&#xff0c;对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeC…...

PaspberryPi推流

1. 创建启动脚本sudo nano /usr/local/bin/rtsp-stream.sh添加内容&#xff1a;#!/bin/bash# RTSP 音视频推流服务脚本 # 适配 Raspberry Pi 3B Camera Module USB 麦克风# 配置项 WIDTH1280 HEIGHT720 FRAMERATE15 VIDEO_BITRATE2000000 AUDIO_DEVICE"hw:1,0" …...

我写的C语言代码笔记

单链表&#xff1a;#include <stdio.h> #include <stdlib.h>//实现初始化&#xff0c;头插&#xff0c;尾插&#xff0c;删除&#xff0c;输出等单链表的基本操作 typedef struct Node {int data;struct Node* next; }Node;//初始化 Node* intList() {Node* list …...

基础设施可观测性:监控和诊断基础设施状态

基础设施可观测性&#xff1a;监控和诊断基础设施状态 一、基础设施可观测性概述 1.1 基础设施可观测性的定义 基础设施可观测性是指通过收集、分析和可视化基础设施的运行数据&#xff0c;来理解和监控基础设施状态的能力。它包括监控服务器、网络、存储等基础设施组件的性能和…...

Cursor集成Trunk插件:AI编程与代码质量守护的完美融合

1. 项目概述&#xff1a;当AI编程助手遇上代码质量守护者最近在折腾Cursor编辑器&#xff0c;发现了一个挺有意思的插件项目——trunk-io/cursor-plugin。简单来说&#xff0c;这就是一个桥梁&#xff0c;把Trunk这个代码质量与安全平台的能力&#xff0c;直接集成到了Cursor这…...