首页 > 试题广场 >

彩色的砖块

[编程题]彩色的砖块
  • 热度指数:1111 时间限制: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
import sys
string=list(sys.stdin.readline().strip())
if len(set(string))==2:
    print(2)
if len(set(string))==1:
    print(1)
if len(set(string))>2:
    print(0)

发表于 2019-08-01 15:44:38 回复(9)
def num(s):
    cnt=len(set(s))
    if cnt>=3:
        return 0
    else:
        return cnt
a=input()
print(num(a))
编辑于 2019-07-18 15:55:48 回复(0)
如果有三个不同字符则不满足上述情况,如果有两个字符,则结果只有两种,若只有一个字符,则结果只有一种。所以本题本意为求不同字符的个数。
#include"iostream"
#include"algorithm"
using namespace std;
int main()
{
char s[50];
cin>>s;
int count = 1;
sort(s,s+strlen(s));      //排序
for(int i=1;i < strlen(s); ++i)
{
if(s[i]-s[i-1] != 0)//两两字符进行比较
count++;
}
if(count > 2)
cout<<0<<endl;
else
cout<<count<<endl;
return 0;
}

发表于 2018-08-11 13:06:52 回复(0)
 s=input('','s');
count=length(unique(s));
if count>=3
    count=0;
    fprintf('%d\n',count)
else
    fprintf('%d\n',count)
end
发表于 2018-08-10 15:06:34 回复(0)
s = input()
color_nums = len(set(s))
if color_nums == 2:
    # 只有两种颜色就是题目中demo的形式,只有两种排列
    print(2)
elif color_nums < 2:
    # 一种颜色的话,就只有一种排列
    print(1)
else:
    # 超过两种颜色一定不存在最多只有一对异色砖块相邻的排列
    print(0)

发表于 2020-12-17 11:47:18 回复(0)
import java.util.HashSet;
import java.util.Scanner;
public class Main{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s = sc.nextLine();
        System.out.println(method(s));
    }
    public static int method(String s) {
        char[] array = s.toCharArray();
        HashSet<Character> set = new HashSet<>();
        for (int i = 0; i < array.length; i++) {
            set.add(array[i]);
        }
        if (set.size() == 1) {
            return 1;
        } else if (set.size() == 2) {
            return 2;
        } else {
            return 0;
        }
    }
}
利用集合中的元素唯一
发表于 2021-08-27 17:27:07 回复(0)
s_list = list(input())
categories = len(set(s_list)) if categories > 2: print(0) elif categories == 2: print(2) else: print(1)

发表于 2020-08-07 21:04:29 回复(0)
def num(a):
    length=len(set(a))  if length>2:  print(0)  if length==2:  print(2)  if length==1:  print(1)
s=input("请输入一段字符串:")
num(s)

发表于 2020-04-05 19:01:26 回复(0)
s = input()
sl = len(set(s))
if sl == 2:
    print(2)
elif sl == 1:
    print(1)
else:
    print(0)


发表于 2019-09-01 14:28:47 回复(0)
python轻松搞定,只有三种情况:
x=input()
iflen(set(x))==2:
    print(2)
eliflen(set(x))==1:
    print(1)
else:
    print(0)
发表于 2019-08-16 13:56:48 回复(0)
//其实就是查有几种砖块,有两种是2,一种是1,其它是0.

importjava.util.*;
 
 
publicclassMain {
    publicstaticvoidmain(String[] args) {
        Scanner sc=newScanner(System.in);
        String str=sc.nextLine();
        System.out.println(judge(str));
    }  
     
     
    publicstaticintjudge(String str) {
        ArrayList<String> list_str=newArrayList<String>();
        ArrayList<Integer> list_int=newArrayList<Integer>();
        for(inti=0;i<=str.length()-1;i++) {
            //遍历list_str,观察是否已经存在
            booleanfound=false;
            for(intj=0;j<=list_str.size()-1;j++) {
                if(list_str.get(j).equals(""+str.charAt(i))) {
                    list_int.set(j, list_int.get(j)+1);
                    found=true;
                    break;
                }
            }
            //没有找到,填入新的元素
            if(!found) {
                list_str.add(""+str.charAt(i));
                list_int.add(1);
            }
        }
        if(list_str.size()>2)
            return0;
        if(list_str.size()==1)
            return1;
        elsereturn2;
    }  
}

发表于 2019-07-22 14:24:56 回复(0)
the_list = input()
num = len(set(the_list))

count = 0
if num>2:
    count = 0
else:
    count = num
print(count) # This is a python code
发表于 2018-08-10 22:06:38 回复(0)