一、解题思路
1、建图
一般建立邻接表和入度统计表
(1)邻接表
当用数字表示点时可以用 vector<vector<int>>
当不是用数字表示点时可以用 unordered_map<char / string...., vector<char / string....>>
在实际问题中如果需要对应关系唯一就要用 unordered_map<..., unordered_set<...>>
(2)入度统计表
当用数字表示点时可以用 vector<int>
当不是用数字表示点时可以用 unordered_map<char / string...., int>
2、找到入度为0点入队
3、删点和与点相邻的边
4、重复2,3直到图中无点或无入度为0的点
二、例题
当队列为空但是还有点入度不为0就说明是有环图,不成立。
细节
(1)当s2是s1的真子串,是一定错误的,因为两者是子串,前者长度还大于后者是不符合题意的
(2)每一次加入边的时候对应关系的两个点都不能重复
(3)初始化入度哈希表时要把点全都置0