类似于python中的回文

时间:2014-07-07 22:11:50

标签: python

以下字符串被视为有效: 不包含以下任何字符的字符串:['/', '<', '>'] 如果s有效,则'<t>' + s + '</t>'也是如此,其中t是以下之一 字符串:'B', 'I', 'U', 'BIG', 'SMALL'。这些&#34;标签&#34;指定任何特殊格式 它们之间的文本(粗体,缩进下划线,增加字体大小,减小字体大小, 分别) 使用字符串s,如果s有效则生成true,否则为false。

def valid_cs116_html(s):
    if '/' or '<' or'>' not in s:
        return True

我只打算不包含['/', '<', '>']的基本情况,如何确定第二种情况'<t>' + s + '</t>'

2 个答案:

答案 0 :(得分:1)

检查字符串是否分别以<t></t>开头和结尾(对于每个有效的t)。如果是,请删除这些代码并返回valid_cs116_html(s) s是内部&#39;字符串,如您的描述。

另外,这个:

if '/' or '<' or'>' not in s:

没有做你认为的事情。你需要:

if '/' not in s and '<' not in s and '>' not in s:

甚至:

if not any(c in s for c in ('/', '<', '>')):

答案 1 :(得分:1)

您要在此处执行的操作是检查字符串的开头和结尾是否具有匹配的标记。我们可以使用Python的re库来匹配这些标记,然后检查字符串的其余部分是否有效:

def valid_cs116_html(s):
    match = re.match(r'^<(B|I|U|BIG|SMALL)>(.*?)</\1>$', s)
    if match is not None:
        return valid_cs116_html(match.group(2))
    else:
        return all(c not in s for c in '/<>')