![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
AII派森
久有凌云志 当争朝夕
展开
-
赛码打字题
题目描述:小明很喜欢打字,今天小红给了小明一个字符串。这个字符串只包含大写和小写字母。我们知道,按下CapsLock键,可以切换大小写模式。我们在小写模式时候,同时按下shift+字母键,就能写出大写字母。在大写模式的时候,按下shift+字母键,就能写出小写字母。现在问题来了,给你一个字符串,问你最少使用多少个按键,就可以写出这个字符串呢?注意,按shift和字母键,算两次按键。开始时均为小写状态。样例输入第一行一个T,表示有T组输入。接下来T组数据:每组数据一个字..原创 2022-04-02 16:37:37 · 1453 阅读 · 1 评论 -
HJ4 字符串分隔
描述•连续输入字符串,请按长度为8拆分每个输入字符串并进行输出;•长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。(注:本题有多组输入)输入描述:连续输入字符串(输入多次,每个字符串长度小于等于100)输出描述:依次输出所有分割后的长度为8的新字符串#1.把完整的数据(0)补上#2.按8位逐行输出while True: try: strs = input() if len(strs)%8 != 0:原创 2022-02-25 18:30:24 · 583 阅读 · 0 评论 -
HJ3 明明的随机数
输入描述:注意:输入可能有多组数据(用于不同的调查)。每组数据都包括多行,第一行先输入随机整数的个数 N ,接下来的 N 行再输入相应个数的整数。具体格式请看下面的"示例"。输出描述:返回多行,处理后的结果while True: try:#有while时,需要try***except n = input() #指定为N个数,输入;()中不能输入其它提示字符 lst = [] #指定一个空列表 for i in原创 2022-02-25 16:14:40 · 88 阅读 · 0 评论 -
HJ2 计算某字符出现次数
描述写出一个程序,接受一个由字母、数字和空格组成的字符串,和一个字符,然后输出输入字符串中该字符的出现次数。(不区分大小写字母)数据范围:1 \le n \le 1000 \1≤n≤1000输入描述:第一行输入一个由字母和数字以及空格组成的字符串,第二行输入一个字符。输出描述:输出输入字符string = input().lower()s = input().lower()count = 0for i in string: if s == i: ..原创 2022-02-25 08:54:31 · 197 阅读 · 0 评论 -
HJ1 字符串最后一个单词的长度
题目描述计算字符串最后一个单词的长度,单词以空格隔开。strs = input()#牛客网中()内不能输入提示字符b = strs.split()[-1]print(len(b))原创 2022-02-25 08:41:58 · 154 阅读 · 0 评论 -
LeetCode136:只出现一次的数字
题目:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。class Solution: def singleNumber(self, nums: List[int]) -> int: numsset = set(nums) for i in numsset: count = nums.count(i) if count==1:原创 2022-02-23 11:23:40 · 265 阅读 · 0 评论 -
一维向量转置点乘np.dot
import numpy as npa = np.array([1, 2])a.shape = (1,2)#第二的纬度那个1是空的,指定了以后才能顺利地讲行向量转为列向量print(a)print(a.transpose())print(np.dot(a,a.transpose()))print("**************************")c = np.array([1, 2])b = c.reshape(len(c),1)#把向量reshape一下,如此便实现了一维向量与.原创 2022-01-24 15:57:45 · 1443 阅读 · 0 评论 -
python 两字符串映射
题目:pattern = "abba",s="dog cat cat dog"---->Truepattern = "abba",s="dog cat cat fish"----->Falseclass Solution: def is_pattern_matched(self, pattern:str,s: str) -> bool: pattern = list(''.join(pattern)) s = s.split(" ")原创 2022-01-24 09:41:46 · 675 阅读 · 0 评论 -
python leetcode125验证回文串
题目:给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。class Solution: def isPalindrome(self, s: str) -> bool: res = [] if s.isspace(): return True else: for i in s:原创 2022-01-20 17:07:48 · 551 阅读 · 0 评论 -
python leetcode118:杨辉三角
题目:给定一个非负整数numRows,生成「杨辉三角」的前numRows行。在「杨辉三角」中,每个数是它左上方和右上方的数的和。class Solution: def generate(self, numRows: int) -> List[List[int]]: ret = [] for i in range(numRows): row = [] #每一行重新append for j...原创 2021-12-18 12:03:35 · 648 阅读 · 0 评论 -
python leetcode121:买卖股票
题目:给定一个数组 prices ,它的第i 个元素prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。法一:双循环遍历(超时)class Solution: def maxProfit(self, prices: List[int]) -> int: pro..原创 2021-12-17 20:12:28 · 116 阅读 · 0 评论 -
python leetcode70:爬楼梯
题目:假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。法一:递归函数class Solution: def climbStairs(self, n: int) -> int: if n == 0 or n == 1: return 1 else: return self.climbStairs(n-1)+原创 2021-12-12 22:08:02 · 206 阅读 · 0 评论 -
python leetcode69:求平方根Sqrt(x)
题目:给你一个非负整数 x ,计算并返回x的 算术平方根 。由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 。注意:不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x ** 0.5 。法一:i*i <=xclass Solution: def mySqrt(self, x: int) -> int: i = 1 while i*i <= x: i += 1 ..原创 2021-12-08 22:27:41 · 258 阅读 · 0 评论 -
python leetcode67:二进制求和
题目:给你两个二进制字符串,返回它们的和(用二进制表示)。输入为非空字符串且只包含数字1和0。例如:输入: a = "11", b = "1" 输出: "100"解法:考虑一个最朴素的方法:先将a和b转化成十进制数,求和后再转化为二进制数。class Solution: def addBinary(self, a: str, b: str) -> str: return bin(int(a, 2) + int(b, 2))[2:]...原创 2021-12-08 21:01:48 · 182 阅读 · 0 评论 -
python LeetCode66:加一
题目:最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。[9,9] ===> [1,0,0]class Solution: def plusOne(self, digits: List[int]) -> List[int]: sum = 0 l = len(digits)-1 for s in digits: sum += s * 10**原创 2021-12-07 20:56:27 · 584 阅读 · 0 评论 -
python 最后一个单词的长度
题目:给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中最后一个单词的长度。单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。class Solution: def lengthOfLastWord(self, s: str) -> int: lst = s.strip().split() return lsts = "Hello World"S = Solution()result = S.length原创 2021-12-07 19:54:13 · 116 阅读 · 0 评论 -
python leetcode53:最大子数组求和
题目:"""给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。"""法1:暴力求解(超出时间限制)class Solution: def maxSubArray(self, nums: List[int]) -> int: lst = [] for i in range(len(nums)): sum = 0 for j in range(i原创 2021-12-01 12:15:27 · 4242 阅读 · 0 评论 -
python leetcode35:搜索插入位置
题目:"""给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。"""法一:比较法class Solution: def searchInsert(self, nums: List[int], target: int) -> int: for i in range(len(nums)): if nums[i] == target: #相等原创 2021-11-30 12:04:07 · 4818 阅读 · 0 评论 -
python LeetCode28:实现strStr
题目:"""给你两个字符串haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回-1 。"""class Solution: def strStr(self, haystack: str, needle: str) -> int: if haystack==needle=='': return 0 length = l..原创 2021-11-30 10:36:10 · 3580 阅读 · 0 评论 -
python leetcode_27移除元素
题目:"""给你一个数组nums和一个值 val,你需要原地移除所有数值等于val的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1)额外空间并原地修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。"""class Solution: def removeElement(self, nums: List[int], val: int) -> int: i = 0 while i<le.原创 2021-11-29 15:27:34 · 276 阅读 · 0 评论 -
python leetcode_26. 删除有序数组中的重复项
题目:"""给你一个有序数组 nums ,请你原地删除重复出现的元素,使每个元素只出现一次,返回删除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组 并在使用 O(1) 额外空间的条件下完成。"""法一:在原数组里面删除重复元素class Solution: def removeDuplicates(self, nums: List[int]) -> int: if not nums: return 0原创 2021-11-24 20:48:00 · 1356 阅读 · 0 评论 -
python 有效的括号
题目:"""给定一个只包括 '(',')','{','}','[',']的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。"""方法:栈后遇到的左括号要先闭合(后进先出),例如s = "{[]}",先闭合(pop)"[]",再"{}"class Solution: def isValid(self, s: str) -> bool: if len(s) % 2 == 1: .原创 2021-11-23 21:20:07 · 1361 阅读 · 0 评论 -
python最长公共前缀
题目:编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串""。法一:横向扫描LCP(S1…Sn)=LCP(LCP(LCP(S1,S2),S3),…Sn)基于该结论,可以得到一种查找字符串数组中的最长公共前缀的简单方法。依次遍历字符串数组中的每个字符串,对于每个遍历到的字符串,更新最长公共前缀,当遍历完所有的字符串以后,即可得到字符串数组中的最长公共前缀。class Solution: def longestCommonPrefix(self...原创 2021-11-23 16:27:39 · 2540 阅读 · 0 评论 -
python罗马数字转整数
题目:"""罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。给定一个罗马数字,将其转换成整数。"""法一:采用dict字典模式class Solution: def romanToInt(self, s: str) -> int: dicts = { 'I' : 1, 'V' : 5, 'X' : 10, 'L' : 50,原创 2021-11-22 16:49:09 · 902 阅读 · 0 评论 -
python回文数判断
题目:"""给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。"""法一:前后对称比较class Solution: def isPalindrome(self, x: int) -> bool: if x < 0: return False string = str(x) if len(string) == 1: return True原创 2021-11-21 20:03:16 · 243 阅读 · 0 评论 -
python整数反转(Reverse Integer)
题目:"""给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围[−2^31,2^31−1],就返回 0。假设环境不允许存储 64 位整数(有符号或无符号)。"""法一:末尾*10# 弹出 x 的末尾数字 digitdigit = x % 10x /= 10# 将数字 digit 推入 rev 末尾rev = rev * 10 + digitclass Solution: def rever原创 2021-11-21 11:52:22 · 2768 阅读 · 0 评论 -
Python最长回文子串
# 1.暴力解法(Brute Method)"""暴力求解是最容易想到的,要截取字符串的所有子串,然后再判断这些子串中哪些是回文的,最后返回回文子串中最长的即可。这里我们可以使用两个变量,一个记录最长回文子串开始的位置,一个记录最长回文子串的长度,最后再截取。"""class Solution: def longestPalindrome(self, s): if (len(s) < 2): return s start .原创 2021-11-17 22:42:47 · 6384 阅读 · 0 评论