背景
MQTT(消息队列遥测传输)是一种基于ISO标准基于发布-订阅的消息传递协议(Wikipedia)。
每条消息都有一个主题,例如以下示例:
myhome/groundfloor/livingroom/temperature
USA/California/San Francisco/Silicon Valley
5ff4a2ce-e485-40f4-826c-b1a5d81be9b6/status
Germany/Bavaria/car/2382340923453/latitude
MQTT客户端可以使用通配符订阅消息主题:
- 单层:
+
- 所有级别开始:
#
例如,订阅myhome/groundfloor/+/temperature
将产生以下结果(不符合项以粗体显示):
✅myhome /地面/客厅/温度
✅myhome /地面/厨房/温度
❌myhome / 地面 /客厅/温度
/ 亮度
❌myhome / 第一层 /客厅/温度
❌ 车库 /地面/ 冰箱 /温度
订阅+/groundfloor/#
将产生以下结果:
✅myhome /地面/客厅/温度
✅myhome /地面/厨房/亮度
✅车库/地面/冰箱/温度/更多/特定的/领域
/ myhome / 第一层 /客厅/温度
❌myhome / 地下室 /角/温度
更多信息在这里。
任务
实现一个接受两个字符串并返回布尔值的函数/程序。第一个字符串是主题主题,第二个是标准主题。条件主题使用上面详细介绍的订阅语法。当受试者符合标准时,该功能是正确的。
此任务的规则:
- 主题是ASCII
#
通配符之外没有标准字段- 通配符不会出现在主题中
- 主题字段数> =条件字段数
- 没有0个字符的字段,也没有正斜杠的开头或结尾
测试用例
条件1 =“ myhome / groundfloor / + / temperature”
标准2 =“ + / groundfloor /#”
(“ abc”,“ ab”)=>否
(“ abc”,“ abc”)=>正确
(“ abc / de”,“ abc”)=>
否(“ myhome / groundfloor / livingroom / temperature”,条件1 )=> true
(“ myhome / groundfloor / kitchen / temperature”,criteria1)=> true
(“ myhome / groundfloor / livingroom / brightness”,criteria1)=> false
(“ myhome / firstfloor / livingroom / temperature”,条件1)= > false
(“车库/地面/冰箱/温度”,criteria1)=> false
(“ myhome /地面/客厅/客厅/温度”,criteria2)=> true
(“ myhome /地面/厨房/厨房/亮度”,criteria2)=> true
(“车库/地面/冰箱/温度/更多/特定/领域”,criteria2)=> true
(“ myhome /一楼/客厅/温度/温度”,criteria2)=> false
(“ myhome /地下室/角落/温度”,criteria2)=>否
(“音乐/ kei $ ha /最新”,“ + / kei $ ha / +”)=> true
a/b/c
将不匹配的标准a/b
,所以我倾向于说没有。