谷歌笔试1
1:给定三个整数a,b,c实现函数int median(int a,int b,int c),返回三个数的中位数,不可以使用sort,要求整数操作(比较,位运行,加减乘除)次数尽量少,并分析说明程序最坏和平均情况下使用的操作次数
#include <stdio.h>
#include <iostream>
using namespace std;
int median(int a,int b,int c)
{
int abMax = (a+b + abs(a-b))/2;
int acMax = ((a+c) + abs(a-c))/2;
if(abMax != acMax)
return abMax < acMax ? abMax:acMax;
else
return ((b+c) +abs(b-c))/2;
}
int main()
{
int a = 1;
int b = 2;
int c = 3;
cout<<median(a,b,c);
getchar();
return 0;
}
2:给定一个key(只含有ASCII编码的小写英文字母),例如kof,然后对input的string(只含有ASCII编码的小写英文字母)利用这个key进行排序,顺序是:先按照key中的字符顺序,然后对key中不包含key的字符,按a-z排序
#include<iostream>
#include<algorithm>
using namespace std;
char *SortKiy(char *str,char *key)
{
sort(str,str+strlen(str));
int flag=0;
for(int i=0;i<(int)strlen(key);i++)
{
for(int j=0;j<(int)strlen(str);j++)
{
if(key[i]==str[j])
{
for(int k=j;k>flag;k--)
{
str[k]=str[k-1];
}
str[flag]=key[i];
++flag;
}
}
}
return str;
}
int main()
{
char key[4]="kof";
char str[50]="wqtewqtewkwetiowoweff";
cout<< SortKiy(str,key)<<endl;
getchar();
return 0;
}

浙公网安备 33010602011771号