这一题算是一个分类讨论的问题吧,我们只需要对每一个字符考察其前序当中所有出现过的字符即可:
我们遍历一轮字符串,即可得到我们最终的答案。
给出python代码实现如下:
class Solution:
def numberOfSpecialChars(self, word: str) -> int:
status = [0 for _ in range(26)]
seen = set()
for ch in word:
if ch in string.ascii_lowercase:
idx = ord(ch) - ord('a')
if string.ascii_uppercase[idx] in seen:
status[idx] = -1
else:
idx = ord(ch) - ord('A')
if string.ascii_lowercase[idx] in seen and status[idx] == 0:
status[idx] = 1
seen.add(ch)
return Counter(status)[1]
提交代码评测得到:耗时322ms,占用内存18.5MB。