一个字符串中任意个连续的字符组成的子序列称为该字符串的子串,则字符串 $\tt abcab$ 有( )个内容互不相同的子串。
这题考字符串子串计数。拿到题先别急着列,看长度n=5,总子串数n(n+1)/2=15,再想哪些会重复。本题重复的是长度1和2的'a'和'ab',减去重复数即可,比枚举去重更稳。
最容易错在把子串和子序列搞混,子序列可以不连续,那'ac'也算,答案就变大了;其次是把重复只减一次,其实长度1的'a'重复了1次(多算1个),长度2的'ab'也重复了1次(多算1个),总共要减2,不是减1;还有人会漏掉空串是否计入,题目默认非空,空串不算。
考察知识点:字符串 — 子串计数(含重复处理)
概念定义:
命题视角: 命题人常挖两个坑:一是混淆子串与子序列(把不连续的也算上),二是重复计数时只减一次。本题字符串较短,直接枚举也容易,但用“总数 − 重复”的思路更能体现对重复规律的理解,也适合考试时快速排除选项。
思考心法: 1. 先算所有连续子串总数:长度n的串共有 n(n+1)/2 个。本题 n=5,总数 = 5×6/2 = 15。 2. 再想哪些内容重复了,重复几次。 - 长度1:'a'出现2次,'b'出现2次,'c'出现1次 → 重复内容只有'a'和'b',每个多算1次,共 +2 个重复。 - 长度2:'ab'出现2次,'bc'1次,'ca'1次 → 重复内容只有'ab',多算1次,共 +1 个重复。 - 长度3及以上:'abc'、'bca'、'cab'、'abca'、'bcab'、'abcab' 均只出现1次,无重复。 3. 去重后数量 = 15 − 2 − 1 = 13。
避坑提醒:
考频与趋势: 字符串考点题库共99题,覆盖10个级别。其中CSP入门级仅考了6题,2022年这一题就是其中之一,说明入门级对基础概念(子串定义、去重)考察频率不高但很典型。从近年分布看,2023年字符串考了11题、2024年10题、2025年32题、2026年19题,热度明显上升,未来入门级仍可能出类似“短串去重计数”的小题,但难度不会大幅拔高。
预测: 暂无足够依据预测未来具体形式,但可预期仍会以短串枚举或简单重复规律为主,侧重辨析子串与子序列、重复计数细节。