【算法】算法题-20231112

算法题

  • [一、459. 重复的子字符串](#一、459. 重复的子字符串)
  • [二、414. 第三大的数](#二、414. 第三大的数)
  • [三、520. 检测大写字母](#三、520. 检测大写字母)
  • [四、680. 验证回文串 II](#四、680. 验证回文串 II)
  • [五、283. 移动零](#五、283. 移动零)

一、459. 重复的子字符串

简单

给定一个非空的字符串 s ,检查是否可以通过由它的一个子串重复多次构成。

示例 1:

输入: s = "abab"

输出: true

解释: 可由子串 "ab" 重复两次构成。

示例 2:

输入: s = "aba"

输出: false

示例 3:

输入: s = "abcabcabcabc"

输出: true

解释: 可由子串 "abc" 重复四次构成。 (或子串 "abcabc" 重复两次构成。)

python 复制代码
def fun2(s):
    return s in (s + s)[1:-1]

s = "aba"
print(fun2(s))

二、414. 第三大的数

简单

给你一个非空数组,返回此数组中 第三大的数 。如果不存在,则返回数组中最大的数。

示例 1:

输入:3, 2, 1

输出:1

解释:第三大的数是 1 。

示例 2:

输入:1, 2

输出:2

解释:第三大的数不存在, 所以返回最大的数 2 。

示例 3:

输入:2, 2, 3, 1

输出:1

解释:注意,要求返回第三大的数,是指在所有不同数字中排第三大的数。

此例中存在两个值为 2 的数,它们都排第二。在所有不同数字中排第三大的数为 1 。

python 复制代码
def fun3(nums):
    nums.sort()
    if len(set(nums)) < 3:
        return nums[-1]
    else:
        return list(set(nums))[0]


nums = [3, 2, 1]
print(fun3(nums))

三、520. 检测大写字母

简单

我们定义,在以下情况时,单词的大写用法是正确的:

全部字母都是大写,比如 "USA" 。

单词中所有字母都不是大写,比如 "leetcode" 。

如果单词不只含有一个字母,只有首字母大写, 比如 "Google" 。

给你一个字符串 word 。如果大写用法正确,返回 true ;否则,返回 false 。

示例 1:

输入:word = "USA"

输出:true

示例 2:

输入:word = "FlaG"

输出:false

python 复制代码
def f1(word):
    if word.islower():
        return True
    elif word[0].isupper() and word[1:].islower():
        return True
    elif word.isupper():
        return True
    else:
        return False


word = "qlas"

print(f1(word))

四、680. 验证回文串 II

简单

给你一个字符串 s,最多 可以从中删除一个字符。

请你判断 s 是否能成为回文字符串:如果能,返回 true ;否则,返回 false 。

示例 1:

输入:s = "aba"

输出:true

示例 2:

输入:s = "abca"

输出:true

解释:你可以删除字符 'c' 。

示例 3:

输入:s = "abc"

输出:false

python 复制代码
def f3(s):
    start=0
    end=len(s)-1
    while start<end:
        if s[start]==s[end]:
            start+=1
            end-=1
        else:
            return s[start:end]==s[start:end][::-1] or s[start+1:end+1]==s[start+1:end+1][::-1]
    return True

s = "abc"
print(f3(s))

五、283. 移动零

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

请注意 ,必须在不复制数组的情况下原地对数组进行操作。

示例 1:

输入: nums = 0,1,0,3,12

输出: 1,3,12,0,0

示例 2:

输入: nums = 0

输出: 0

python 复制代码
def test4(nums):
    j=0
    for i in range(len(nums)):
        if nums[i]:
            nums[i],nums[j]=nums[j],nums[i]
            j+=1
    return nums
nums = [0,1,0,3,12]
r=test4(nums)
print(r)
相关推荐
黄贵根1 小时前
JavaScript实现教培行业意向登记系统
开发语言·javascript·ecmascript
zzzll11113 小时前
Claude Code离线安装方案揭秘
开发语言·php
wabs6664 小时前
关于图论【卡码网117.软件构建的思考】
数据结构·算法·软件构建·图论·卡码网
mifengxing4 小时前
LeetCode 41.缺失的第一个正数|Hard题O(n)+O(1)最优解法深度解析
java·算法·leetcode·排序算法
wling03014 小时前
vasp虚频计算-python脚本
开发语言·windows·python·vasp计算
郝学胜-神的一滴5 小时前
Qt 高级编程 040:按钮悬浮弹出滑块弹窗的完整攻略
开发语言·c++·qt·软件工程·用户界面
Tongzhi20265 小时前
从部署到运维:通芝科技无感考勤一体机的全流程效率解析
运维·数据结构·科技·算法·贪心算法
Wang's Blog5 小时前
AI Agent白手起家30: 动态示例选择器之根据长度选择 Few Shot 示例
算法
xrandzj5 小时前
Python面向对象编程入门:类、实例、初始化与封装实践
开发语言·python
DLYSB_6 小时前
API 网关流量洪峰与突发 CC 攻击:我用 Go 写了个“现场物理防御哨兵”,把故障响应压缩到秒级
开发语言·后端·golang·报警灯