字符串相关的经典LeetCode题

#字符串
#反转字符串

#反转字符串
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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

茉莉_Molly

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值