05_字符串

字符串

基本操作

s = "hello"
lst = list(s)        # 字符串转列表

# 大小写转换
s.upper()            # 转大写
s.lower()            # 转小写
s.capitalize()       # 首字母大写
s.swapcase()         # 大小写互换

# 去除空白
s.strip()            # 去除首尾空白
s.lstrip()           # 去除左边空白
s.rstrip()           # 去除右边空白

查找与替换

# 查找
s.find('a')          # 返回第一个 'a' 的索引,不存在返回 -1
s.rfind('a')         # 从右边找
s.index('a')         # 同 find,但不存在会报错
s.count('a')         # 统计字符出现次数
s.count('abc')       # 统计子串出现次数

# 替换
s.replace('old', 'new')       # 替换所有
s.replace('old', 'new', 1)    # 只替换第一个
s.replace(c, ' ')             # 字符替换为空格

判断方法

# 字符/字符串判断
'a'.isdigit()        # 单字符判断:False
'5'.isdigit()        # 数字字符:True
s.isdigit()          # 全是数字
s.isalpha()          # 全是字母
s.islower()          # 全是小写
s.isupper()          # 全是大写

# 回文判断
s == s[::-1]         # 字符串是否回文

格式化与对齐

# 填充对齐
s = s.ljust(width, '0')   # 左边补 '0' 到指定长度
s = s.rjust(width, '0')   # 右边补 '0'
s = s.center(width, '0')  # 居中补 '0'

# 补零
s = s.zfill(5)            # 左边补 '0' 到宽度 5

# 分割与连接
s.split()                 # 按空白分割(默认)
s = ' '.join(lst)        # 用空格连接(⚠️ lst 必须是字符串列表!)
s = ''.join(lst)          # 直接连接

# ⚠️ join() 要求所有元素都是字符串
nums = [1, 2, 3]
# ' '.join(nums)          # ❌ TypeError: sequence item 0: expected str instance, int found
' '.join(map(str, nums))  # ✅ '1 2 3'

去重与排序

# 字符串去重(保持顺序)
s = ''.join(dict.fromkeys(s))

# 字符串排序
sorted_s = ''.join(sorted(s))           # 按字符排序
words.sort()                            # 列表按字典序排序
# Python 字符串默认按字典序比较:'A' < 'Z' < 'a' < 'z'

ASCII 码与进制转换

# ord() 和 chr()
ord('A')      # 字符转 ASCII 码: 65
chr(97)       # ASCII 码转字符: 'a'

# 字母序号转换(A-Z → 0-25)
ord('A') - ord('A')  # 0

# 数字字符转数字
int('5')           # 5
ord('5') - ord('0') # 5

# 进制转换
int("FF", 16)      # 十六进制转十进制: 255
int("101", 2)      # 二进制转十进制: 5
int("77", 8)       # 八进制转十进制: 63

# 十进制转其他进制
bin(255)           # '0b11111111'
oct(255)           # '0o377'
hex(255)           # '0xff'

最长数字子串

import re

# 提取连续数字串
s = "abc123xyz456"
arr = re.findall(r'\d+', s)  # ['123', '456']

# 找最长数字子串
max_len = max(len(x) for x in arr)
res = ''.join(x for x in arr if len(x) == max_len)

最长回文子串

s = input().strip()

res = ""

def expand(l, r):
    """从中心 (l, r) 向两边扩展,返回最长回文子串"""
    while l >= 0 and r < len(s) and s[l] == s[r]:
        l -= 1
        r += 1
    return s[l + 1: r]

for i in range(len(s)):
    res = max(res, expand(i, i), key=len)     # 奇数长度回文
    res = max(res, expand(i, i + 1), key=len) # 偶数长度回文

print(len(res))

05_字符串
https://mingsm17518.github.io/2026/09/19/算法学习/01_数据结构/05_字符串/
作者
Ming
发布于
2026年9月19日
许可协议