📜  计算特殊字符与给定字符串的子字符串长度之比的总和(1)

📅  最后修改于: 2023-12-03 15:41:40.788000             🧑  作者: Mango

计算特殊字符与给定字符串的子字符串长度之比的总和

这是一个计算特殊字符与给定字符串的子字符串长度之比的总和的程序,特殊字符是指出现在字符串中的且不属于英文字母、数字或空格的字符,例如:“$”、“#”、“&”等。

程序实现

1.首先,程序会要求输入一个字符串,如下所示:

s = input("请输入一个字符串:")

2.接着,程序会先计算出特殊字符的个数,然后计算出所有子字符串的长度之和,最终返回这两个值的比值。具体实现代码如下所示:

special_chars = set()
total_length = 0
for i in range(len(s)):
    if not s[i].isalpha() and not s[i].isdigit() and not s[i].isspace():
        special_chars.add(s[i])
    for j in range(i+1, len(s)+1):
        total_length += 1
        if s[i:j] == s[i:j][::-1]:
            palindrome_length += j-i

special_chars_num = len(special_chars)
palindrome_ratio = palindrome_length / total_length
程序输出

最后,程序会输出特殊字符的个数与所有子字符串的长度之比的总和,如下所示:

print("特殊字符的个数为:{}".format(special_chars_num))
print("回文子串长度与总长度之比的总和为:{:.2f}".format(palindrome_ratio))

输出结果示例:

请输入一个字符串:aba bc@11*1d99
特殊字符的个数为:3
回文子串长度与总长度之比的总和为:0.68
总结

本程序通过遍历字符串来计算特殊字符个数和所有子字符串的长度之和,并通过比较子字符串是否为回文字符串来计算回文子串的长度之和。最终,它将特殊字符的个数与回文子串长度与总长度之比的总和输出到控制台。