彩色的砖块 Python

题目描述
小易有一些彩色的砖块。每种颜色由一个大写字母表示。各个颜色砖块看起来都完全一样。现在有一个给定的字符串s,s中每个字符代表小易的某个砖块的颜色。小易想把他所有的砖块排成一行。如果最多存在一对不同颜色的相邻砖块,那么这行砖块就很漂亮的。请你帮助小易计算有多少种方式将他所有砖块排成漂亮的一行。(如果两种方式所对应的砖块颜色序列是相同的,那么认为这两种方式是一样的。)
例如: s = “ABAB”,那么小易有六种排列的结果:
“AABB”,“ABAB”,“ABBA”,“BAAB”,“BABA”,“BBAA”
其中只有"AABB"和"BBAA"满足最多只有一对不同颜色的相邻砖块。
输入描述:
输入包括一个字符串s,字符串s的长度length(1 ≤ length ≤ 50),s中的每一个字符都为一个大写字母(A到Z)。
输出描述:
输出一个整数,表示小易可以有多少种方式。
示例1
输入
ABAB
输出
2

对每种颜色砖块个数做统计:

如果出现了两种以上的颜色,肯定最少有两种相邻,直接输出0.
如果出现了一种,那就只有一种。
如果出现了两种,那就只有两种。

from collections import Counter
arr = Counter(input()).values()
if len(arr) > 2:
	print(0)
elif len(arr) == 2:
	print(2)
else:
	print(1)

python计数字符串中字符数目的集中方法:

  1. seq.count()
seq = 'abcdbabaecccdbb'
m = seq.count('a') #5
  1. 字典计数
    对字典排序:
sys = {'name': '张三',
       'age': '十八',
       'gender': 'man'}
# 根据key的升序排列,把key value都打印出来
new_sys1 = sorted(sys.items(), key=lambda d: d[0], reverse=False)
print(new_sys1)

# 打印出根据value排序后的键值对的具体值
new_sys2 = sorted(sys.items(),  key=lambda d: d[1], reverse=False)
print(new_sys2)
  1. from collections import Counter
a = Counter(seq) #返回一个字典 Counter({'a': 3, 'b': 5, 'c': 4, 'd': 2, 'e': 1})
Counter(seq).keys()
Counter(seq).values()

a.most_common(k) #返回前k个频率最高的字符和数目
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值