📅  最后修改于: 2023-12-03 14:58:21.362000             🧑  作者: Mango
本套装的第53章包括了以下题目:
题目描述:
给定一个字符串,编写一个函数将其反转并返回结果。
要求:
样例输入: "hello"
样例输出: "olleh"
解题思路:
可以使用头尾指针来遍历整个字符串,然后交换头尾指针所指向位置的字符。
代码:
def reverse_string(s:str) -> str:
s = list(s)
i, j = 0, len(s) - 1
while i < j:
s[i], s[j] = s[j], s[i]
i += 1
j -= 1
return "".join(s)
题目描述:
给定两个字符串s和t,判断s是否能够通过重新排列得到t。
要求:
样例输入: "anagram"
, "nagaram"
样例输出: True
解题思路:
首先可以统计s和t中每个字符出现的次数,然后比较这两个哈希表是否相同即可。
代码:
def is_anagram(s:str, t:str) -> bool:
s_count = {}
t_count = {}
for c in s.lower():
s_count[c] = s_count.get(c, 0) + 1
for c in t.lower():
t_count[c] = t_count.get(c, 0) + 1
return s_count == t_count
题目描述:
给定一个字符串,编写一个函数判断它是否是回文字符串。
要求:
样例输入: "A man, a plan, a canal: Panama"
样例输出: True
解题思路:
可以先将字符串中的空格和标点符号去掉,然后将字符串全部转换为小写并翻转,最后判断是否和原字符串相同即可。
代码:
def is_palindrome(s:str) -> bool:
s = "".join(filter(str.isalnum, s)).lower()
return s == s[::-1]
题目描述:
给定一个字符串和一个正整数k,将这个字符串重复k次并返回结果。
要求:
样例输入: "abc"
, 3
样例输出: "abcabcabc"
解题思路:
可以使用字符串乘法,将字符串复制k次然后使用join
函数连接起来。
代码:
def copy_string(s:str, k:int) -> str:
res = ""
for i in range(k):
res += s
return res
题目描述:
给定一个只包含小写字母的字符串s和一个正整数k,用字母的出现次数和相对顺序构建一个长度为k的新字符串。
要求:
样例输入: "abca"
, 3
样例输出: "aaabbbccc"
解题思路:
可以使用一个哈希表来统计每个字母出现的次数,然后遍历字符串构造新字符串。
代码:
def build_string(s:str, k:int) -> str:
count = {}
for c in s:
count[c] = count.get(c, 0) + 1
res = ""
for c in s:
if count[c] >= k:
res += c*k
else:
res += c*count[c]
count[c] = 0
for c in count.keys():
if count[c] > 0:
res += c*count[c]
return res
以上就是本套装的第53章所包括的所有题目。