问题:编码与反编码
若2[a] = aa
如何输出 例如:3[a3[b][3c]] 或者 3[2[b]]
解题思路:
面试的时候想着看一一对应,比如第一个右括号位置对应的第一个左括号位置,如果比第二个右括号位置远的话,就说明发生了嵌套。
错了呀。的确是位置上的不同,但是不是这么思考的,因为这样你很难确定出括号的对应关系不是吗?
你这种思路大概是,我默认第一个个反向括号和第一个正向括号对应,如果不对应,说明嵌套。可是呢,这种设想方式很难有个真正正确对应的推导能力
比如:3[a3[b]] 你这种倒是很容易就解决了,但是呢?如果3[a3[b3[c]]]呢?如果3[a3[b]3[c]]呢?怎么对应?
我们需要的就是获得各个括号的对应关系对吗?那么找规律是很必要的,你的确也找了个规律,但是观察力不够敏锐。我们不要自己创建,发展规律,要从他的本质规律上去运用他自己的规律
思路就是进行括号计数
有一个正括号,必然有一个反括号。如果嵌套,即使不变,这就是本质规律。很直观。
维护一个int,一个List Integer ,让游标移动,遇到正括号int+1 遇到反向括号int-1。遇到正括号List 加一个位置,遇到反向括号的时候,我们记录的上一个正括号就是这个反括号对应的正括号。然后当int=0的时候,就搜寻完了。顺便处理一下异常
那怎么输出呢?当进行int-1操作的时候,他是现在string中最内层的编码string。把它展开