题目1:一个由小写字母组成的字符串可以看成一些同一字母的最大碎片组成的。例如,"aaabbaaac" 是由下面碎片组成的:'aaa','bb','c'。牛牛现在给定一个字符串,请你帮助计算这个字符串的所有碎片的平均长度是多少。
输入描述: 输入包括一个字符串s,字符串s的长度length(1 ≤ length ≤ 50),s只含小写字母('a'-'z') 输出描述: 输出一个整数,表示所有碎片的平均长度,四舍五入保留两位小数。 如样例所示: s = "aaabbaaac" 所有碎片的平均长度 = (3 + 2 + 3 + 1) / 4 = 2.25 输入例子 1: aaabbaaac 输出例子 1: 2.25
#include
#include
//#include
using namespace std;
void components(string s,int n){
int temp=1;
for(int i=0;i-1;i++){
if(s[i]!=s[i+1]){
temp++;
}
}
printf("%0.2f",(float)n/temp);
//cout<
}
int main(){
string res;
cin>>res;
components(res,res.size());
return 0;
}
题目2:牛牛想尝试一些新的料理,每个料理需要一些不同的材料,问完成所有的料理需要准备多少种不同的材料。 输入描述: 每个输入包含 1 个测试用例。每个测试用例的第 i 行,表示完成第 i 件料理需要哪些材料,各个材料用空格隔开,输入只包含大写英文字母和空格,输入文件不超过 50 行,每一行不超过 50 个字符。 输出描述: 输出一行一个数字表示完成所有料理需要多少种不同的材料。 输入例子: BUTTER FLOUR HONEY FLOUR EGG 输出例子: 4
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
char str[55];
map<string,int>m;
int cont;
int main() {
//freopen("wangyi03.txt", "r", stdin);
m.clear();
cont = 0;
while(scanf("%s", str) != EOF) {
if(m.count(str) == 0) {
m[str] = ++cont;
}
}
printf("%d\n", cont);
return 0;
}
题目3:给定字符串,做单词间的逆序调整。 (1)实现字符串逆序函数
(2)将整个句子逆序
(3)每个单词逆序
void reverse(string & str,int start,int end){
int i=start;
int j =end;
char temp;
while(i<=j)
{
temp=str[i];
str[i]=str[j];
str[j]=temp;
i++;
j--;
}
}
void reverse_sentence(string &str){
if (str.empty())
return ;
int start=0;
int end=str.length()-1;
reverse(str,start,end);
for(int i=0;i
{
if(str[i]==' ')
{
reverse(str,start,i-1);
start=i+1;
}
if(i==end)
{
reverse(str,start,end);
}
}
}
题目4:字符串的排序,使得字符串拼接得到的大字符串是最小的