#字符串
#反转字符串
#反转字符串
def reverseString(s):
# 将字符串转换为列表
s = list(s)
# 使用双指针法进行反转
left, right = 0, len(s) - 1
while left < right:
s[left], s[right] = s[right], s[left]
left += 1
right -= 1
# 将列表转换为字符串并返回
return ''.join(s)
#最长公共前缀
#最长公共前缀
def longestCommonPrefix(strs):
# 如果输入为空,则返回空字符串
if not strs:
return ""
# 找到最短的字符串作为基准
shortest = min(strs, key=len)
# 遍历最短字符串的每个字符
for i in range(len(shortest)):
# 检查其他字符串是否与当前字符相同
for string in strs:
if string[i] != shortest[i]:
# 如果不相同,则返回当前已匹配的前缀
return shortest[:i]
# 如果所有字符串都匹配到最后一个字符,则返回整个最短字符串
return shortest
#最长回文子串
#最长回文子串
def longestPalindrome(s):
# 初始化最长回文子串的长度和起始位置
start, end = 0, 0
# 遍历字符串中的每个字符
for i in range(len(s)):
# 计算以当前字符为中心的奇数长度回文子串的长度
len1 = expandAroundCenter(s, i, i)
# 计算以当前字符和下一个字符为中心的偶数长度回文子串的长度
len2 = expandAroundCenter(s, i, i + 1)
# 取两者中的最大值作为当前最长回文子串的长度
maxLen = max(len1, len2)
# 如果当前最长回文子串的长度大于之前记录的长度,则更新起始位置和长度
if maxLen > end - start:
start = i - (maxLen - 1) // 2
end = i + maxLen // 2
# 返回最长回文子串
return s[start:end+1]
def expandAroundCenter(s, left, right):
# 从中心向两边扩展,直到遇到不相等的字符为止
while left >= 0 and right < len(s) and s[left] == s[right]:
left -= 1
right += 1
# 返回回文子串的长度
return right - left - 1
#字符串相加
#字符串相加
def addStrings(num1, num2):
# 将两个字符串转换为整数
num1 = int(num1)
num2 = int(num2)
# 将两个整数相加并转换为字符串
return str(num1 + num2)
#字符串分割
#字符串分割
def strStr(haystack, needle):
# 如果needle为空,则返回0
if not needle:
return 0
# 遍历haystack中的每个字符
for i in range(len(haystack) - len(needle) + 1):
# 判断当前位置是否与needle相等
if haystack[i:i+len(needle)] == needle:
return i
# 如果未找到匹配的子串,则返回-1
return -1
#最长无重复字符的子串
#最长无重复字符的子串
def lengthOfLongestSubstring(s):
# 初始化最长子串的长度和起始位置
start, maxLen = 0, 0
# 使用字典记录每个字符最后出现的位置
lastIndex = {}
# 遍历字符串中的每个字符
for i in range(len(s)):
# 如果当前字符已经出现过,并且其位置在当前子串的起始位置之后,则更新起始位置
if s[i] in lastIndex and lastIndex[s[i]] >= start:
start = lastIndex[s[i]] + 1
# 更新当前字符最后出现的位置
lastIndex[s[i]] = i
# 更新最长子串的长度
maxLen = max(maxLen, i - start + 1)
# 返回最长子串的长度
return maxLen
#反转字符串里的单词
#反转字符串里的单词
def reverseWords(s):
# 将字符串按空格分割成单词,并翻转每个单词
words = [word[::-1] for word in s.split()]
# 将翻转后的单词拼接起来,并用空格分隔
return ' '.join(words)
#字符串中第一个唯一字符
#字符串中第一个唯一字符
def firstUniqChar(s):
# 使用字典记录每个字符出现的次数
count = {}
for char in s:
count[char] = count.get(char, 0) + 1
# 遍历字符串中的每个字符,找到第一个出现次数为1的字符,并返回其索引
for i in range(len(s)):
if count[s[i]] == 1:
return i
# 如果未找到唯一字符,则返回-1
return -1
#字符串转整数
#字符串转整数
def string_to_integer(s):
"""
将一个表示整数的字符串转换为对应的整数。
:param s: 输入的字符串
:return: 转换后的整数
"""
# 去除字符串首尾的空格
s = s.strip()
# 如果字符串为空,返回0
if not s:
return 0
# 初始化结果和符号位
result = 0
sign = 1
# 判断正负号
if s[0] == '-':
sign = -1
s = s[1:]
elif s[0] == '+':
s = s[1:]
# 遍历字符串中的每个字符
for char in s:
# 如果字符不是数字,跳出循环
if not char.isdigit():
break
# 更新结果
result = result * 10 + int(char)
# 返回带符号的结果
return sign * result
字符串相关的经典LeetCode题
于 2024-04-10 16:04:12 首次发布