我正在编写一个算法,它将首先采用各种端点的配置文件及其相关方法,如下所示:
/guest guestEndpoint
/guest/lists listEndpoint
/guest/friends guestFriendsEndpoint
/guest/X/friends guetFriendsEndpoint
/guest/X/friends/X guestFriendsEndpoint
/X/guest guestEndpoint
/X/lists listEndpoint
/options optionsEndpoint
X
这里代表一个通配符,所以任何字符串都可以匹配。该算法会将其作为输入并构建一棵树,其中每个节点代表/
's 之间的一个标记。每个叶子都是一个有效的端点。
然后当用户传入类似guest/abc/friends
它会从根开始遍历树的东西时,然后查找guest
连接到根的节点,如果存在则转到节点guest
,如果guest
这里来宾将有一个wildcard
节点,那么如果abc
不匹配任何ofguest
的节点,但存在一个wildcard
节点,它将转到wildcard
. 然后它会查看wildcard
它是否有一个friends
节点,如果有就去那里。然后如果friends
是叶节点,它将返回相应的方法。
这个算法有意义吗?我想知道查找的运行时间是什么。我认为这将是 O(n) 其中 n 是传入的参数中的令牌数。
这是我将根据上面的输入构建的图表的图像。每个菱形代表一个端点方法。
谢谢你的帮助!