Python查找字符串tex中的重复数

2024-06-02 08:35:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我想写一个函数,返回在输入字符串中多次出现的字母字符和数字位数。在

示例:“aabbccd”应该返回3,因为“a”、“b”和“c”都有重复项。对于“aaabbcd”也是一样,也会返回3。在

这是我所做的,但似乎我的代码有问题。它在某些情况下有效,但在其他情况下显然不起作用。在

def duplicate_count(text):
  count=0
  for i in range(len(text)-1):
      for j in range(i+1,len(text)):
          if text[i]==text[j]:
              count+=1
              break
      break
  return count

Tags: 函数字符串textin示例forlencount
3条回答

这个会更简洁:

import numpy as np

def duplicate_count(text):

    #elem is an array of the unique elements in a string
    #and count is its corresponding frequency
    elem, count = np.unique(tuple(text), return_counts=True)

    return np.sum(count>1)

以下是一种在纯O(N)时间内不使用昂贵的str.count()(尽管性能取决于字符串和重复字符的长度):

def duplicate_count(text):
    seen = set()
    return len({char for char in text if char in seen or seen.add(char) is not None})

print(duplicate_count("aabbccd"))
# 3

一种简单的方法是:

def duplicate_count(s):
    return len([x for x in set(s) if s.count(x) > 1])

相关问题 更多 >