青训营笔记1

80 阅读3分钟

题目一:

小D拿到了一个仅由 "abc" 三种字母组成的字符串。她每次操作会对所有字符同时进行以下变换: 将 'a' 变成 'bc' 将 'b' 变成 'ca' 将 'c' 变成 'ab' 小D将重复该操作 k 次。你的任务是输出经过 k 次变换后,得到的最终字符串。 例如:对于初始字符串 "abc",执行 2 次操作后,字符串将变为 "caababbcbcca"。

题目二: 问题描述 给定一个字符串 s,该字符串中只包含英文大小写字母。你需要计算从字符串中最多能组成多少个字符串 "ku"。每次可以随机从字符串中选一个字符,并且选中的字符不能再使用。字符串中的字符大小写可以忽略,即大写和小写字母视为相同。 例如,输入 "AUBTMKAxfuu",从中最多能组成 1 个 "ku"。

总结如下:

在编程学习的征程中,刷题是巩固知识、提升能力的关键环节。近期,我使用豆包 MarsCode AI 刷题题库,收获颇丰,在此想分享一下我的学习方法与心得,希望能对其他入门同学有所助益。

一、题目解析

以题目一中关于字符串变换的问题为例,这是一道典型的字符串操作与规律探索类题目。

思路:初次面对这个问题,很容易陷入迷茫,因为每次变换涉及所有字符且规则较为独特。但仔细分析,我们发现每次变换其实是基于前一次变换结果的确定性操作。可以通过模拟前几次变换来找寻规律,比如初始字符串“abc”,第一次变换后为“bc ca ab”,第二次变换则依据新字符串每个字符规则再次变换,逐步递推下去。这样,不管要进行多少次变换,都能有条不紊地得出结果。

图解:虽这题不像图形算法题有直观图形,但我们可构建表格辅助理解。以行表示变换次数,列依次列出每次变换后的字符串状态,像这样:

变换次数字符串
0abc
1bc ca ab
2caab abb cbc ca
清晰展现每次迭代的变化,助于把握整体演变脉络。

清晰展现每次迭代的变化,助于把握整体演变脉络。

代码详解:用 Python 实现,核心思路是利用循环模拟 k 次变换过程。


s = "abc"   初始字符串

k = 2   变换次数

for _ in range(k):

    new_s = ""

    for c in s:

        if c == 'a':

            new_s += "bc"

        elif c == 'b':

            new_s += "ca"

        else:

            new_s += "ab"

    s = new_s

print(s)

代码先是初始化字符串与变换次数,在循环里,针对原字符串每个字符按规则生成新字符拼接进新字符串,循环结束,新字符串即最终结果。

 二、知识总结

在刷题过程中,积累诸多新知识。像上述题目强化字符串操作熟练度,熟练掌握字符遍历、拼接技巧。还领悟递推思维,很多复杂变换、迭代场景依此理清逻辑。在处理字符规则转换时,巧用字典映射能让代码更简洁高效,如定义trans_map = {'a': 'bc', 'b': 'ca', 'c': 'ab'},在变换时直接new_s += trans_map[c]

 三、学习计划

制定刷题计划要循序渐进、分层突破。先从简单基础题型练起,夯实语法、熟悉常见算法套路,像数组、字符串基础操作类题目,每天安排 3 - 5 题,仔细分析答案理解思路。中期攻克中等难度,注重优化解法、拓展思维,结合错题深入剖析知识盲点,整理错题集按知识点分类,标注错误原因与正解思路,定期回顾强化记忆。后期挑战高难,锻炼复杂场景解题与创新思维,参加线上编程竞赛检验实力。