彩色的砖块
来源:互联网 发布:nex5t 软件b 编辑:程序博客网 时间:2024/04/28 05:41
牛客网试题链接
小易有一些彩色的砖块。每种颜色由一个大写字母表示。各个颜色砖块看起来都完全一样。现在有一个给定的字符串s,s中每个字符代表小易的某个砖块的颜色。小易想把他所有的砖块排成一行。如果最多存在一对不同颜色的相邻砖块,那么这行砖块就很漂亮的。请你帮助小易计算有多少种方式将他所有砖块排成漂亮的一行。(如果两种方式所对应的砖块颜色序列是相同的,那么认为这两种方式是一样的。)
例如: s = “ABAB”,那么小易有六种排列的结果:
“AABB”,”ABAB”,”ABBA”,”BAAB”,”BABA”,”BBAA”
其中只有”AABB”和”BBAA”满足最多只有一对不同颜色的相邻砖块。
输入描述:
输入包括一个字符串s,字符串s的长度length(1 ≤ length ≤ 50),s中的每一个字符都为一个大写字母(A到Z)。
输出描述:
输出一个整数,表示小易可以有多少种方式。
输入例子1:
ABAB
输出例子1:
2
- 采用桶排序思路,先计算一共有多少种类别(由于字符种类较少,采用桶排序思路) 不知道为啥,只ac90%
#include<iostream>#include<string>using namespace std;int main(){ string s ; bool tong[30]; int num = 0; int result = 0; cin>>s; int n = s.size(); for(int i=0; i<n ;i++){ if(tong[s[i]] == false){ num++; tong[s[i]] = true; } if(num > 2){ break; } } if(num < 2 ) result = 1; else if(num==2) result = 2; cout<<result; return 0;}
- 采用C++unique函数,首先排序,在合并。计算合并后的序列size,判断字符串类别。
#include<iostream>#include<string>#include<algorithm>using namespace std;int main(){ string str; int res = 0; cin>>str; sort(str.begin(),str.end()); str.erase(unique(str.begin(),str.end()),str.end()); if(str.size() == 1){ res = 1; }else if(str.size() == 2){ res = 2; } cout<<res<<endl; return 0;}
阅读全文
1 0
- 彩色的砖块
- 彩色的砖块
- 网易笔试:彩色的砖块
- [编程题] 彩色的砖块
- [编程题] 彩色的砖块
- [编程题] 彩色的砖块
- 八、网易2017<彩色的砖块>
- 网易编程题 彩色的砖块
- 3366彩色砖块外挂
- 2018网易秋招内推笔试题——彩色的砖块
- 2017网易校招内推 [编程题] 彩色的砖块@Java
- 网易笔试在线编程_ 彩色的砖块
- 2018网易内推笔试-彩色的砖块(python)
- 蒙特卡洛方法的应用——解决“彩色砖块”问题
- 2018网易校招内推--彩色砖块
- 2018网易校招编程题(1)彩色的砖块
- 网易2018校招内推笔试-彩色砖块
- 网易2018校招内推编程题--彩色砖块
- 自服务数据
- Ubuntu16.04下Hadoop 2.7.3的安装与配置
- Java 泛型概述
- leetcode_04_ Median of Two Sorted Arrays
- HDU 5975 && 2016ICPC大连 E: Aninteresting game(树状数组原理)
- 彩色的砖块
- 用HTML5写表
- Web前端面试题及答案--JavaScript
- poj 3667 线段树 区间合并
- cf Gym 101086F Hey JUDgE
- 实现更换头像功能
- Color Detection 颜色定位
- 竖式问题
- hdu 1724(Simpson积分)