美团点评 测试开发笔试 2019/10/16 15:00
第一题 美团集体照 50%
时间限制:C/C++语言 1000MS;其他语言 3000MS
内存限制:C/C++语言 65536KB;其他语言 589824KB
内存限制:C/C++语言 65536KB;其他语言 589824KB
题目描述:
美团某部门在拍年度纪念照时,一般要求员工按照 非递减 的高度顺序排列。
请你返回至少有多少个员工没有站在正确位置数量。该人数指的是:能让所有员工以 非递减 高度排列的必要移动人数。
例如:有高度为 1,1,4,2,1,3 的6个学生
共有3个学生没有站在正确的位置(高度为 4、3 和最后一个 1 的学生,没有站在正确的位置)
如遇到空输入的情况,需输出0
#include <stdio.h> #include <stdlib.h> int *test(int *arr,int len){ int *p=(int *)malloc(len*sizeof(int)); for(int i=0;i<len;i++){ p[i]=arr[i]; } for(int i=1;i<=len-1;i++){ int isSwap=0; for(int j=0;j<=len-i-1;j++){ if(p[j]>p[j+1]){ int temp=p[j]; p[j]=p[j+1]; p[j+1]=temp; isSwap=1; } } if(isSwap==0){ break; } } return p; } int main(void){ char str[1000]; int num[100]; scanf("%s",str); if(str[0]='\0'){ printf("%d\n",0); return 0; } printf("%s\n",str); int i=0; int temp=0; int count=0; while(str[i]!='\0'){ temp=temp*10+str[i]-'0'; if(str[i+1]==',' || str[i+1]=='\0'){ num[0]=temp; temp=0; count++; if(str[i+1]==','){ i++; } } i++; } int *p=test(num,count); int nn=0; for(int k=0;k<count;k++){ if(p[k]!=num[k]){ nn++; } } printf("%d\n",nn); return 0; }
第二题 寻找最小字符串 17% 来不及了
时间限制:C/C++语言 1000MS;其他语言 3000MS
内存限制:C/C++语言 65536KB;其他语言 589824KB
内存限制:C/C++语言 65536KB;其他语言 589824KB
题目描述:
小美和小团在玩一个游戏,小美任意给出一个大字符串str1以及一个独立的小字符串str2,小团需要从这个大字符串str1里找到包含独立小字符串str2中所有字符的最小子字符串str3;
* 例如,小美给出一个大字符串"meituan2019"和一个子字符串"i2t",那么小团给出的答案就应该是"ituan2";
需要注意:
1、str1中有可能没有完整包含str2所有字符的情况,此时返回"";
2、str1不会为空,但str2有可能为空,此时返回整个str1;
3、str2可能存在重复的字符,此时str3需要包含相等数量该字符;
int test(char *big,char *small){ int i=0; while(small[i]!='\0'){ int j=0; int isFind=0; while(big[j]!='\0'){ if(small[i]==big[j]){ isFind=1; break; } j++; } if(isFind==0){ return 0; } i++; } return 1; } int main(void){ char big[1000]; char small[100]; scanf("%s",big); scanf("%s",small); if(small[0]='\0'){ printf("%s\n",big); }else if(test(big,small)==0){ printf("%s\n",""); } }