首页 > 试题广场 >

彩色的砖块

[编程题]彩色的砖块
  • 热度指数:31094 时间限制: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
头像 bandiaoz
发表于 2024-12-18 17:11:43
解题思路 这道题要求计算满足条件的排列方式数量,关键点是: 每个字母代表一种颜色 相邻砖块颜色不能相同 排列方式相同的定义是:颜色序列相同 需要找到最多只有一对不同颜色相邻的排列方式数量 解题步骤: 统计字符串中不同字符的数量 如果字符种类超过2个,输出0(因为必然会有多于一对不同颜色相邻) 展开全文
头像 DearAlice
发表于 2024-08-23 11:16:04
import java.util.*; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new S 展开全文
头像 Trylfg
发表于 2024-11-04 19:25:06
s = list(str(input())) def caisezhuangkuai(s): a = len(s) num = len(set(s)) if num==2: return 2 elif num==1: return 1 展开全文
头像 牛客题解官
发表于 2020-06-05 18:03:28
题解 难度:简单 知识点:逻辑与理解 这道题认真读完题目则发现很简单,因为漂亮的砖块最多存在一对不同颜色的相邻砖块。所以只有三种情况: 如果有两种颜色以上,那么不可能组成漂亮砖块 只有两种颜色例如AB,那么排列有AB和BA,所以两种排列方式 只有一种颜色,那么只有一种排列方式 颜色对应不同的字母 展开全文
头像 健康快乐最重要
发表于 2020-03-15 12:26:38
不知道哪个公司出这么简单的题 /* 1.如果颜色>2两种,肯定不可以。 2.如果有两种不同的颜色,只有两种排列方式。 3.如果有一种不同的颜色,则只有一种排列方式。 所以本题的重点在于找一共有几种不同的颜色 */ #include<iostream> 展开全文
头像 牛客548243991号
发表于 2024-08-29 09:10:00
#include <bits/stdc++.h> #include <unordered_map> using namespace std; int main() { string s; cin >> s; unordered_map&l 展开全文
头像 miss_阿拉蕾
发表于 2020-08-09 09:40:25
import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String str = 展开全文