首页 > 试题广场 >

彩色的砖块

[编程题]彩色的砖块
  • 热度指数:31077 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
小易有一些彩色的砖块。每种颜色由一个大写字母表示。各个颜色砖块看起来都完全一样。现在有一个给定的字符串s,s中每个字符代表小易的某个砖块的颜色。小易想把他所有的砖块排成一行。如果最多存在一对不同颜色的相邻砖块,那么这行砖块就很漂亮的。请你帮助小易计算有多少种方式将他所有砖块排成漂亮的一行。(如果两种方式所对应的砖块颜色序列是相同的,那么认为这两种方式是一样的。)
例如: s = "ABAB",那么小易有六种排列的结果:
"AABB","ABAB","ABBA","BAAB","BABA","BBAA"
其中只有"AABB"和"BBAA"满足最多只有一对不同颜色的相邻砖块。

输入描述:
输入包括一个字符串s,字符串s的长度length(1 ≤ length ≤ 50),s中的每一个字符都为一个大写字母(A到Z)。


输出描述:
输出一个整数,表示小易可以有多少种方式。
示例1

输入

ABAB

输出

2

还以为自己没理解他的意思:只要任意两种字符之间满足其相邻的个数小于等于1即可,是我想的太多

char_set = set(list(input()))
print(0) if len(char_set) > 2 else print(len(char_set))
发表于 2020-08-06 12:25:30 回复(0)
(1)先判断字符串中的字符种类有没有超过两个,如果超过了,那么符合规则的排列方式将为0个;如果恰好只有两个,那么符合规则的排列方式为2个;如果只有一个,那么符合规则的排列方式为1个。
(2)怎么判断字符串中的字符种类呢?可以先把字符串按字母进行排序,然后依次比较相邻字符是否相同。注意想办法将字符串变为数组,这样就好操作多了。
def count_type_number(str):
    array_str=[]
    for s in range(len(str)):
        array_str.append(str[s])
    array_str.sort()
    count=0
    length=len(array_str)
    for i in range(length-1):
        if array_str[i]!=array_str[i+1]:
            count=count+1
    if count==1:
        type_number=2
    if count==0:
        type_number=1
    if count > 1:
        type_number=0
    return type_number
str=input()
print(count_type_number(str))


发表于 2019-09-06 10:13:36 回复(0)

python 几行就可以

s=input()
list_s=[i for i in s]
s_length=len(set(list_s))
if s_length>2:
    print('0')
elif s_length==2:
    print('2')
else:    
    print('1')
发表于 2019-03-23 20:38:16 回复(0)
a=len(list(set(raw_input()))) if a<3: print(a) else: print(0) 

#只要审题好,答案自出现-。-

发表于 2019-03-22 12:51:22 回复(0)
n = list(input())
if len(set(n)) == 1:
    print(1)
elif len(set(n)) == 2:
    print(2)
else:
    print(0)

发表于 2019-03-21 17:14:41 回复(0)

python解法

水出天际的一道题目,刷新了认知下限。


思路

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

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

arr = Counter(input()).values()
if len(arr) > 2:
    print(0)
elif len(arr) == 1:
    print(1)
else:
    print(2)
发表于 2019-02-24 18:55:47 回复(4)
利用set函数来简化代码
def CubePermutationNum(s):
    if not s:
        return None
    s_set = set(s)
    dif_char_num = len(s_set)
    if dif_char_num == 1:
        return 1
    if dif_char_num == 2:
        return 2
    return 0

if __name__ == "__main__":
    s = raw_input()
    res = CubePermutationNum(s)
    print(res)

发表于 2019-01-26 18:25:25 回复(0)
# coding=utf-8
def fun():
    s = raw_input()
    a = set(s)
    if len(a)==1:
        return 1
    elif len(a)==2:
        return 2
    else:
        return 0

if __name__=='__main__':
    print(fun())


发表于 2019-01-15 20:09:33 回复(0)

热门推荐

通过挑战的用户

查看代码
彩色的砖块