第一道编程题是求无序字符数组的第n个最小未出现的正偶数。
#include<iostream> #include<algorithm> using namespace std; unsigned int getMinEven(int *a, int len, int n) { if (a==NULL || n<=0) return 0; unsigned int target = n*2; sort(a,a+len); for (int i=0; i<len; i++) { //去重 if(i>0 && a[i] == a[i-1]) continue; if (a[i]>0 && a[i]%2 == 0) { if(a[i]<=target) target += 2; } //后面的数不需要再看 if(target < a[i]) break; } return target; } int main() { int arr[4] = {6, 2, 8, 4}; cout<<getMinEven(arr, 4, 2)<<endl; cout<<getMinEven(arr, 4, 1)<<endl; return 0; }第二道编程题是,判断两个字符串拼接形式是否相等。 如:decec 和 fabab拼接方式相同,和faabb拼接方式不同。
#include<iostream> #include<algorithm> using namespace std; bool Func(const string &s, const string &t) { int sizeS = s.size(); int sizeT= t.size(); if(sizeS != sizeT) return false; if(sizeS == 0) return true; char mapChar[256] ={0}; for (int i = 0; i < sizeS; i++) { if(mapChar[s[i]] == '\0') mapChar[s[i]] = t[i]; else if(mapChar[s[i]] != t[i]) return false; } return true; } int main() { cout << boolalpha << Func("decec", "fabab") << endl; cout << boolalpha << Func("decec", "faabb") << endl; cout << boolalpha << Func("cdc", "cdd") << endl; }