字符串排列组合算法_题库 | 网易算法工程师笔试编程题型介绍及解析 第 5 期...

题目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//#includeusing 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:字符串的排序,使得字符串拼接得到的大字符串是最小的
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值