编程题第二题,拍下来的,当时不让截图
题目描述:
给出一个字符串,你可以攒则任意一个不同位置的字符进行交换,且只能交换一次,问:可以获得多少种不同的字符串
输入描述:
一行中输入一行字符串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)
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由半码博客整理,本文链接:https://www.bmabk.com/index.php/post/73542.html