题目链接:http://hihocoder.com/contest/ntest2015septdm/problem/1
题目大意为:给定具有嵌套结构(‘{’和‘}'代表一个嵌套)的字符串一和目标字符串二,求字符串二出现在字符串一的第几层嵌套中,如有多个答案,按增序输出(结果不重复);
求解方法:
先从一个样例入手,字符串一为 "Fruit{apple{shape,color},orange{color,price},color}",字符串二为"color",可见字符串一中各个子字符串所在的嵌套层次依次为:
Fruit 1
apple 2
shape 3
color 3
orange 2
color 3
price 3
color 2
于是目标字符串二所在的嵌套层次有3,3,2.按照题目要求,最后输出2,3
这个过程可分为两步:求目标字符串所有可能的嵌套层次、按增序并无重复地输出。
求目标字符串所有可能的嵌套层次可通过对字符串一从左至右进行扫描,计算出每一个子串所在的嵌套层次,然后将所扫描到的子串与目标字符串进行匹配,如是目标字符串,则保存其所在的嵌套层次,这部分代码如下:
然后是如何对所保存的多个嵌套层次增序并无重复地输出,首先进行增序排序,其次利用两个下标来确保无重复输出,这部分代码如下: