仅使用for循环和if/else操作计算字符串中的唯一字符数



我应该找到字符串中唯一字符的数量。

这是一个陷阱,没有数组,甚至没有while循环(尽管for循环可以实现这一点)。如果不在for循环下编写一堆荒谬的if-else语句来检查每个字符值,我似乎无法做到这一点。

使用此:

len(set("stackoverflow"))  # returns 12

由于您说过不允许使用set,因此Christian推荐的解决方案是:len(set('aabbcd'))

你可以使用for循环来解决它,就像你想的那样:

string = 'aabbcd'
unique = []
for char in string[::]:
    if char not in unique:
        unique.append(char)
print(len(unique))

输出:4

请下次上传您的尝试,让我们尝试并帮助您解释为什么这些尝试不起作用。这个网站不是为你做作业的。

编辑:替换了您也说过不能使用的列表()。

计算字符串中唯一字符的数量Python仅用于循环和ifel操作

计算字符串s:中唯一ASCII字母的数量

import string
s = 'AabC'
s = s.lower()
print(sum(1 for c in string.ascii_lowercase if s.count(c) == 1))

如果要分别计算大写/小写字母,请删除s.lower()行,并使用string.ascii_letters而不是string.ascii_lowercase。如果字符串中可能有其他符号,例如标点符号,则结果可能与len(set(s))不同,例如':!'

所以不允许是;'while循环","集合","数组"(以及我假定的列表)。。

您可以创建一个包含所有唯一字符的字符串,并使用for循环遍历这些字符,这样您就不需要列表、数组或while循环。

letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz,.?*&^%$#@!etc"
def unique_count(some_string):
    letter_count = 0
    for letter in letters:
        if letter in some_string:
        letter_count += 1
    return letter_count
print(unique_count("whatEver@")

//这将打印9(因为E!=E)

也许由于要匹配的字符串太长而不那么优雅,但它满足了不使用列表、数组或while循环的要求。

您可以通过只使用for循环和在列表上应用len()函数来实现这一点。

def unique_count(word):
  k=list()
  for x in word:
    if x not in k:
      k.append(x)
  return len(k)
print(unique_count("stackoverflow is goOd"))
//prints 17 because case sensitive and count whitespace

您还可以创建一个函数,并通过传递参数随时调用它。

def unique_count(word):
  k=list()
  for x in word:
    if x not in k:
      k.append(x)
  return len(k)
print(unique_count("stackoverflow is goOd"))
//prints 17

最新更新