网易游戏2016校招"数据挖掘研究员"在线比赛题一求解算法(C++)
2015-09-13 20:35
316 查看
题目链接: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
这个过程可分为两步:求目标字符串所有可能的嵌套层次、按增序并无重复地输出。
求目标字符串所有可能的嵌套层次可通过对字符串一从左至右进行扫描,计算出每一个子串所在的嵌套层次,然后将所扫描到的子串与目标字符串进行匹配,如是目标字符串,则保存其所在的嵌套层次,这部分代码如下:
然后是如何对所保存的多个嵌套层次增序并无重复地输出,首先进行增序排序,其次利用两个下标来确保无重复输出,这部分代码如下:
题目大意为:给定具有嵌套结构(‘{’和‘}'代表一个嵌套)的字符串一和目标字符串二,求字符串二出现在字符串一的第几层嵌套中,如有多个答案,按增序输出(结果不重复);
求解方法:
先从一个样例入手,字符串一为 "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
这个过程可分为两步:求目标字符串所有可能的嵌套层次、按增序并无重复地输出。
求目标字符串所有可能的嵌套层次可通过对字符串一从左至右进行扫描,计算出每一个子串所在的嵌套层次,然后将所扫描到的子串与目标字符串进行匹配,如是目标字符串,则保存其所在的嵌套层次,这部分代码如下:
然后是如何对所保存的多个嵌套层次增序并无重复地输出,首先进行增序排序,其次利用两个下标来确保无重复输出,这部分代码如下:
相关文章推荐
- C++中的指针和数组
- Effective C++——条款36(第6章)
- C++Primer Plus 第九章-存储持续性、作用域和链接性
- 【C/C++学院】0802-链式栈/链表队列以及优先队列/封装链表库
- C++派生类的继承方式总结:
- C++中的 cout 和cin
- map的详细用法
- map容器对象插入数据的4种方式讲解
- C++中的static关键字的总结
- 【LeetCode从零单刷】Valid Anagram
- c++一些常用函数的积累
- c++一些常用函数的积累
- 12个有趣的C语言面试题及答案
- c++求数组长度
- C语言之数组专题:数组指针、指针数组、数组做函数参数退化、数组名、数组类型
- C++虚函数
- C++虚函数
- C语言strstr()函数常用示例详解[求一个字符串在另一个字符串中出现的次数]
- C语言 结构体
- 第2周项目1 C/C++语言中函数参数传递的三种方式