本题需要对“以相邻双花括号 {{ ... }}
表示的占位变量”进行合法性校验。根据题意,合法性规则归纳如下:
{{
与 }}
视为模板分界符,必须成对闭合。{{
与 }}
之间必须含有至少一个非空白字符(允许前后或中间出现空格)。{{ ... }}
内再次出现 {{ ... }}
)。{{
或 }}
,则视为有效模板。为满足上述要求,采用**线性扫描**即可:
假设需要设计一个模板渲染引擎,给定一个字符串,判断该输入的模板字符串是否合法有效;
模板引擎采用双花括号匹配方式,用于替换中间的变量;
有效字符串需满足:
1、必须采用相邻双花括号方式进行匹配,并且要求是闭合的,例如 {{a}}合法,{a} 不合法;
2、双花括号之间必须有有效字符,不可以只包含空格:例如 {{ }} 不合法;
3、在双花括号之间存在有效字符的情况下,允许存在空格;例如 {{a }} 合法;
4、允许出现多个双花括号匹配,但不允许嵌套,例如 {{ {{ a }} b }} 不合法,{{ a }} {{ b }}合法
备注:
1、每次仅输入一个模板字符串
2、如果不包含任何双花括号,认定为有效模板
输入为需要判断有效性的字符串模板,举例(以下为 4 个输入)如下:
this is a {{question}}
this is a {question}
this is { } a {qu{estion}
this is a {qu{estion}
输出是否为有效字符串,布尔值,有效返回 true,无效返回 false
输入
this is a {{question}}
输出
true