在Python中查找输入单词中是否存在短路的程序
假设我们有一组单词。我们必须检查给定的单词是否可以链接为一个环。单词A只有当A的最后一个字符与B的第一个字符相同时,才可以放在链接圆环的另一个单词B的前面。每个单词必须被使用且仅能使用一次(第一个/最后一个单词不会被考虑)。
因此,如果输入为words = [“ant”, “dog”, “tamarind”, “nausea”, “gun”],则输出为True。
为此,我们将遵循以下步骤 –
- 创建一个新的键 – 值对列表graph。
-
创建一个新的集合seen。
-
创建一个新的键 – 值对列表inDegree。
-
创建一个新的键 – 值对列表outDegree。
-
对于words中的每个单词,请执行以下操作
- start:= word [0]
-
end:= word [-1]
-
将end插入到graph [start]的末尾。
-
outDegree [start]:= outDegree [start] + 1
-
inDegree [end]:= inDegree [end] + 1
- start:= word [0]
-
对于outDegree中的每个节点,请执行以下操作 –
- 如果outDegree [node]与inDegree [node]不同,则
- 返回False
- 如果outDegree [node]与inDegree [node]不同,则
- dfs(words [0,0])
-
如果已使用的大小与graph的大小相同,则返回。
-
定义函数dfs(),这将带有节点。
- 添加(node)中的seen
-
对于graph [node]中的每个子项,请执行以下操作 –
- 如果不存在,则为child not in seen,则
-
dfs(child)
示例
让我们看一下以下实现,以更好地理解 –