凌晨两点,我对着屏幕上的报错发呆。这已经是第三次了。

那道字符串解码题,看起来简单得像小学算术。k[abc]就是abc重复k次,规则清晰,示例明了。我信心满满地写下第一版代码,心想不过如此。

打开网易新闻 查看精彩图片

结果输出来的是"cccc",而正确答案应该是"accaccacc"。

我盯着那个错位的输出看了很久。忽然意识到,我的解法把嵌套结构完全理解错了——3[a2[c]]里,应该先算2[c]得到cc,再算a+cc得到acc,最后重复三次。但我写的逻辑,直接把最内层的c重复了四次,外面的a和3全都丢了。

像极了某些关系里的错位。

你以为是A导致B,拼命在B上使劲,却不知道真正的症结藏在A前面的那个数字里。那些看不见的括号,层层嵌套,你以为自己在解决表层问题,其实从未触达核心。

第二版我换了思路,用栈结构逐层拆解。遇到右括号就弹出,遇到左括号就标记,逻辑上应该没问题了。但输出依然是错的——"abc"而不是"aaabcbc","ac"而不是"accaccacc"。

问题出在哪?我反复检查,发现栈里存的是字符,但数字k可能被拆成了多个位。比如"100[a]",我的代码会把'1'、'0'、'0'当成三个独立的数字弹出,而不是一个完整的100。

这个bug让我想起很多事。我们处理信息的时候,常常只看到碎片,就急着下结论。一个眼神、一句话、一次沉默,被单独解读,却忽略了它们原本属于同一个上下文

第三版终于过了。我学会了在栈里同时存数字和字符串,遇到嵌套就压栈,遇到闭合就弹出计算,把结果再压回去。层层剥茧,直到栈里只剩一个答案。

写完之后我没有立刻去睡。250天的挑战走到第95天,我第一次觉得刷题和谈恋爱有点像——都需要耐心拆解自己的惯性思维,都需要承认第一直觉常常是错的,都需要在反复试错之后,才能找到那个能容纳所有嵌套和重复的正确结构。

而那个正确答案,往往比你想象的要长得多。105的长度上限,原来不是限制,是提醒——有些展开,就是需要这么多字符才能说清楚。