编程题第二题,拍下来的,当时不让截图
题目描述:
给出一个字符串,你可以攒则任意一个不同位置的字符进行交换,且只能交换一次,问:可以获得多少种不同的字符串
输入描述:
一行中输入一行字符串s;
1 <= strlen(s) <= 10^5;
s仅由小写字母构成;
输出描述:
输出可以得到多少不同的字符串
实例一
输入
aaaa
输出
1
实例二
输入
abcd
输出
6
下面是我当时写的拙劣代码,如果有更好地方法可以告诉我,感激不尽!
s = "aaaab"
chang = len(s)
zi = {}
zong = 0
flag = 0
for i in range(chang):
if s[i] in zi.keys():
flag = 1
zi[s[i]] = zi[s[i]] + 1
else:
zi[s[i]] = 1
for j in range(chang-1):
zong = zong + (chang - j - zi[s[j]])
zi[s[j]] = zi[s[j]] - 1
print(zi[s[j]])
zong = zong+flag
print(zong)