【数据结构与算法】之字符串系列-20240125

发布时间:2024年01月25日

在这里插入图片描述

一、520. 检测大写字母

简单
我们定义,在以下情况时,单词的大写用法是正确的:
全部字母都是大写,比如 “USA” 。
单词中所有字母都不是大写,比如 “leetcode” 。
如果单词不只含有一个字母,只有首字母大写, 比如 “Google” 。
给你一个字符串 word 。如果大写用法正确,返回 true ;否则,返回 false 。

示例 1:
输入:word = “USA”
输出:true

示例 2:
输入:word = “FlaG”
输出:false

根据题目要求,若单词的大写用法正确,则需要满足:

若第 1 个字母为大写,则其他字母必须均为大写或均为小写,即其他字母必须与第 2 个字母的大小写相同;
若第 1 个字母为小写,则其他字母必须均为小写。

istitle() 方法用于检查字符串是否符合标题文本的格式,即每个单词的首字母都是大写字母,其余字母都是小写字母或不是字母。如果字符串符合标题文本格式,则返回 True,否则返回 False。

def func520(word):
    return word.isupper() or word.islower() or word.istitle()

word = "FlaG"
print(func520(word))

二、面试题 01.01. 判定字符是否唯一

简单
实现一个算法,确定一个字符串 s 的所有字符是否全都不同。

示例 1:
输入: s = “leetcode”
输出: false

示例 2:
输入: s = “abc”
输出: true

思路:通过set方法得到的集合的长度与s的长度进行对

def func0101(s):
    return len(set(s)) == len(s)

s = "abc"
print(func0101(s))

三、面试题 01.02. 判定是否互为字符重排

简单
给定两个由小写字母组成的字符串 s1 和 s2,请编写一个程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。

示例 1:
输入: s1 = “abc”, s2 = “bca”
输出: true

示例 2:
输入: s1 = “abc”, s2 = “bad”
输出: false

思路:如果字符串s1和s2的字符个数一样,则可以重新排列变成另一个字符串

def func0102(s1, s2):
    ss1 = Counter(s1)
    ss2 = Counter(s2)
    if ss1 == ss2:
        return True
    return False


s1 = "abc"
s2 = "bad"
res = func0102(s1, s2)
print(res)

四、面试题 01.03. URL化

简单
提示
URL化。编写一种方法,将字符串中的空格全部替换为%20。假定该字符串尾部有足够的空间存放新增字符,并且知道字符串的“真实”长度。(注:用Java实现的话,请使用字符数组实现,以便直接在数组上操作。)

示例 1:
输入:"Mr John Smith ", 13
输出:"Mr%20John%20Smith"

示例 2:
输入:" ", 5
输出:"%20%20%20%20%20"

def fun1(s):
    s1=s[:13].replace(' ','%20')
    return s1
s="Mr John Smith    "
res=fun1(s)
print(res)

五、面试题 01.04. 回文排列

简单
提示
给定一个字符串,编写一个函数判定其是否为某个回文串的排列之一。
回文串是指正反两个方向都一样的单词或短语。排列是指字母的重新排列。回文串不一定是字典当中的单词。

示例1:
输入:“tactcoa”
输出:true(排列有"tacocat"、“atcocta”,等等)
思路:如果字符串中的字符为奇数个,并且超过1个,则为False

def func0104(s):
    res = Counter(s)
    odd = 0
    for val in res.values():
        if val % 2 == 1:
            odd += 1
            if odd > 1:
                return False
    return True

s = "tactcoa"
r = func0104(s)
print(r)

六、面试题 01.09. 字符串轮转

简单
提示
字符串轮转。给定两个字符串s1和s2,请编写代码检查s2是否为s1旋转而成(比如,waterbottle是erbottlewat旋转后的字符串)。
示例1:
输入:s1 = “waterbottle”, s2 = “erbottlewat”
输出:True

示例2:
输入:s1 = “aa”, s2 = “aba”
输出:False
思路:如果字符串A经过多次旋转之后得到字符串B,那么字符串A拼接后再去掉首尾各一位后一定包含字符串B

def func0109(s1, s2):
    return s2 in (s1 + s1)[1:-1]


s1 = "aa"
s2 = "aba"
print(func0109(s1, s2))

在这里插入图片描述

文章来源:https://blog.csdn.net/YZL40514131/article/details/135833735
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。