小牛丨软件测试学习小牛丨软件测试学习
首页
  • 业务测试面试题
  • 数据库测试面试题
  • Linux测试环境面试题
  • 网络协议测试面试题
  • 中间件测试面试题
  • Java测试开发面试题
  • Python测试开发面试题
  • Python自动化面试题
  • Java自动化面试题
  • 性能测试面试题
  • 手撕代码
  • HR面试题
  • 系列总入口
  • 业务测试理论
  • 数据库测试
  • Linux测试环境
  • 网络协议
  • 中间件测试
  • Python编程
  • Java编程
  • 自动化测试
  • 性能测试
  • AI测试
  • HR面试
  • AI测试学习路线
  • AI测试基础面试题
  • 大模型测试面试题
  • AI自动化测开面试题
  • AI Agent测试面试题
  • AI性能与稳定性测试面试题
  • AI应用安全测试面试题
  • 互联网大厂面试真题
  • 互联网中厂面试真题
  • 手机厂商面试真题
  • 通信厂商面试真题
  • 新能源汽车面试真题
  • 银行金融面试真题
  • 项目说明
  • 电商接口文档
  • 实战项目总入口
  • 测试简历编写指南
  • 20K level 简历打磨指南
  • 测试简历模板参考
  • 简历常见问题与避坑
  • 零基础入行专题路径
  • 初中级进阶高级专题路径
  • 零基础小白入行软件测试保姆级学习路线
  • 初中级测试进阶高级测试全路线
首页
  • 业务测试面试题
  • 数据库测试面试题
  • Linux测试环境面试题
  • 网络协议测试面试题
  • 中间件测试面试题
  • Java测试开发面试题
  • Python测试开发面试题
  • Python自动化面试题
  • Java自动化面试题
  • 性能测试面试题
  • 手撕代码
  • HR面试题
  • 系列总入口
  • 业务测试理论
  • 数据库测试
  • Linux测试环境
  • 网络协议
  • 中间件测试
  • Python编程
  • Java编程
  • 自动化测试
  • 性能测试
  • AI测试
  • HR面试
  • AI测试学习路线
  • AI测试基础面试题
  • 大模型测试面试题
  • AI自动化测开面试题
  • AI Agent测试面试题
  • AI性能与稳定性测试面试题
  • AI应用安全测试面试题
  • 互联网大厂面试真题
  • 互联网中厂面试真题
  • 手机厂商面试真题
  • 通信厂商面试真题
  • 新能源汽车面试真题
  • 银行金融面试真题
  • 项目说明
  • 电商接口文档
  • 实战项目总入口
  • 测试简历编写指南
  • 20K level 简历打磨指南
  • 测试简历模板参考
  • 简历常见问题与避坑
  • 零基础入行专题路径
  • 初中级进阶高级专题路径
  • 零基础小白入行软件测试保姆级学习路线
  • 初中级测试进阶高级测试全路线
  • 手撕代码精华文章

    • 手撕代码精华文章
    • 1. 测试岗手撕代码怎么准备
    • 2. 数组题常见解法怎么总结
    • 3. 字符串题常见解法怎么总结
    • 4. 字典 Map 在算法题中怎么用
    • 5. 双指针题怎么理解
    • 6. 滑动窗口题怎么入门
    • 7. 链表题面试怎么讲
    • 8. 排序算法怎么准备
    • 9. 二分查找怎么写不容易错
    • 10. 手撕代码面试表达技巧
⌕
🛒项目实战📦资料包🛠测试神器AIAI路线CV简历测评🧭入行测评🧪测开测评🎯训练营🏆案例❤赞赏我

3. 字符串题常见解法怎么总结

字符串题是测试岗手撕代码中非常高频的题型。字符串在测试工作中也很常见,比如处理接口字段、Token、日志、文件路径、错误提示、手机号脱敏、订单号解析等。面试中的字符串题通常不会特别难,但很容易考察边界、索引、字符统计、双指针和滑动窗口。

准备字符串题,重点掌握:反转字符串、判断回文、统计字符次数、找第一个不重复字符、判断字符串是否包含、最长无重复子串、字符串压缩、大小写处理。写字符串题时,一定要考虑空字符串、单字符、大小写、空格、特殊字符和中文字符等情况。

一、字符串题先确认什么

拿到题目先问:

  • 输入是否可能为空;
  • 是否区分大小写;
  • 是否包含空格;
  • 是否包含数字和特殊字符;
  • 是否只处理英文;
  • 是否需要原地修改;
  • 返回字符串、布尔值还是下标;
  • 是否要求时间复杂度。

这些条件会影响代码。

二、反转字符串

可以用双指针,也可以用切片。面试中建议能讲双指针。

def reverse_string(s):
    chars = list(s)
    left, right = 0, len(chars) - 1
    while left < right:
        chars[left], chars[right] = chars[right], chars[left]
        left += 1
        right -= 1
    return "".join(chars)

边界:空字符串、单字符、奇数长度、偶数长度。

三、判断回文字符串

回文是正读反读一样。

def is_palindrome(s):
    left, right = 0, len(s) - 1
    while left < right:
        if s[left] != s[right]:
            return False
        left += 1
        right -= 1
    return True

如果题目要求忽略大小写和空格,需要先清洗字符串。

四、统计字符出现次数

使用字典最方便。

def char_count(s):
    count = {}
    for ch in s:
        count[ch] = count.get(ch, 0) + 1
    return count

适合题:字符频次、找重复字符、判断两个字符串是否由相同字符组成。

五、找第一个不重复字符

思路:先统计次数,再按原字符串顺序找第一个次数为 1 的字符。

def first_unique_char(s):
    count = {}
    for ch in s:
        count[ch] = count.get(ch, 0) + 1
    for i, ch in enumerate(s):
        if count[ch] == 1:
            return i
    return -1

注意返回的是字符还是下标,要看题目要求。

六、最长无重复子串

这是滑动窗口经典题。

def length_of_longest_substring(s):
    seen = {}
    left = 0
    max_len = 0
    for right, ch in enumerate(s):
        if ch in seen and seen[ch] >= left:
            left = seen[ch] + 1
        seen[ch] = right
        max_len = max(max_len, right - left + 1)
    return max_len

测试用例:

abcabcbb -> 3
bbbbb -> 1
pwwkew -> 3
空字符串 -> 0

七、字符串压缩

例如 aaabbc 压缩成 a3b2c1。

def compress(s):
    if not s:
        return ""
    result = []
    count = 1
    for i in range(1, len(s)):
        if s[i] == s[i - 1]:
            count += 1
        else:
            result.append(s[i - 1] + str(count))
            count = 1
    result.append(s[-1] + str(count))
    return "".join(result)

边界:空字符串、单字符、全部相同。

八、字符串题常见坑

1. 忘记空字符串

很多题空字符串应该返回空、0 或 True,要看题目定义。

2. 下标越界

访问 s[i + 1] 时要注意边界。

3. 没有确认大小写

A 和 a 是否算一样,要问清。

4. 没有处理空格和特殊字符

回文题经常会要求忽略非字母数字字符。

5. Python 字符串不可变

频繁拼接建议用列表收集后 join。

九、测试用例怎么补

字符串题可以补:

  • 空字符串;
  • 单字符;
  • 全部相同;
  • 没有重复;
  • 有空格;
  • 有大小写;
  • 有数字;
  • 有特殊字符;
  • 中文字符;
  • 长字符串。

十、面试回答模板

如果面试官问“字符串题常见解法怎么总结”,可以这样回答:

字符串题我会先确认是否为空、是否区分大小写、是否包含空格和特殊字符。常见解法有双指针、字典计数和滑动窗口。比如反转字符串和判断回文适合双指针;统计字符出现次数、找第一个不重复字符适合用字典;最长无重复子串适合滑动窗口。写完后会用空字符串、单字符、全部重复、大小写和特殊字符这些边界验证。

十一、练习清单

  1. 反转字符串;
  2. 判断回文;
  3. 统计字符次数;
  4. 第一个不重复字符;
  5. 判断两个字符串是否异位词;
  6. 最长无重复子串;
  7. 字符串压缩;
  8. 替换空格;
  9. 判断是否包含子串;
  10. 手机号脱敏。

字符串题的关键是索引、边界和字符处理。测试岗回答时要主动补充异常输入和边界用例。

配套刷题:

  • 手撕代码
相关推荐

下一步可以看这些

面试通关软件测试面试通关系列精华文章

把面试题、项目、简历和训练营串成一套求职准备路径。

入行路线零基础入行软件测试专题路径

从测评、学习路线、项目、简历到面试,按顺序入行。

进阶路线初中级测试进阶高级专题路径

接口自动化、性能测试、CI/CD、复杂业务质量保障进阶路线。

AI 方向AI 测试学习路线专题页

大模型评测、RAG 测试、Agent 测试和 AI 自动化路线。

求职结果Offer 案例 / 学员案例展示

看看真实学员 Offer 案例,判断目标和学习投入是否匹配。

资料 / 交流群添加小牛微信

备注:资料、简历、AI 或找工作,领取对应资料或进交流群。

添加小牛微信
Prev
2. 数组题常见解法怎么总结
Next
4. 字典 Map 在算法题中怎么用