擅长:python、mysql、java
<h2>理智的解决方案</h2>
<p>将文本拆分为单词,并计算其中有多少以哈希符号开头。你知道吗</p>
<pre><code>def check(text):
words = text.split()
num_hashtags = sum(word.startswith('#') for word in words)
num_words = len(words) - num_hashtags
return 1 <= num_words <= 3 and num_hashtags > 1
</code></pre>
<pre><code>>>> [check(text) for text in [s1,s2,s3,s4]]
[True, True, False, False]
</code></pre>
<h2>正则表达式解决方案</h2>
<pre><code>import re
def check(text):
pattern = r'(?=.*\b(?<!#)\w+\b)(?!(?:.*\b(?<!#)\w+\b){4})(?:.*#){2}'
return bool(re.match(pattern, text))
</code></pre>
<p>我故意不解释正则表达式,因为我不想你用它。你可能会感到困惑,这应该是一个强烈的迹象,表明这是一个糟糕的代码。你知道吗</p>