1、华为笔试算法题汇总 1.通过键盘输入一串小写字母 (az)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。 比如字符串“ abacacde”过滤结果为“ abcde”。 要求实现函数: void stringFilter(const char *pInputStr, long lInputLen, char *pOutputStr); 【输入】 pInputStr: 输入字符串 lInputLen: 输入字符串长度 【输 出】 pOutputStr: 输出字符串,空间已经开辟好,与输入字符串等长; 【注意】只需要完成该函数功能算法,中间不需要有任
2、何 IO的输入输出 示例 输入:“ deefd” 输出:“ def” 输入:“ afafafaf” 输出:“ af” 输入:“ pppppppp” 输出:“ p” main函数已经隐藏,这里保留给用户的测试入口,在这里测试你的实现函数,可以调用 printf打印输出 当前你可以使用其他方法测试,只要保证最终程序能正确执行即可,该函数实现可以任意修改,但是不要改变函数 原型。 一定要保证编译运行不受影响 cpp view plaincopy / #include #include using namespace std; bool g_flag26; void stringFilter(cons
3、t char *pInputStr, long lInputLen, char *pOutputStr) assert(pInputStr != NULL); int i = 0; if (pInputStr = NULL | lInputLen #include using namespace std; void stringZip(const char *pInputStr, long lInputLen, char *pOutputStr) const char *p = pInputStr; int num = 1; int i = 0; p+; while(*p != NULL) w
4、hile(*p = *(p-1) p+; if (num 1) int size = 0; int temp = num; while(num) /计算位数 size+; num /= 10; num = 1; for (int j = size; j 0; j-) pOutputStri+j-1 = 0+ temp%10; temp /= 10; i +=size; pOutputStri+ = *(p-1); p+; else pOutputStri+ = *(p-1); p+; pOutputStri = 0; int main() char input = “cccddecc“; ch
5、ar *output = new charstrlen(input) + 1; stringZip(input,strlen(input),output); cout using namespace std; void arithmetic(const char *pInputStr, long lInputLen, char *pOutputStr) const char *input = pInputStr; char *output = pOutputStr; int sum = 0; int operator1 = 0; int operator2 = 0; char *temp =
6、new char5; char *ope = temp; while(*input != ) /获得操作数 1 sum = sum*10 + (*input+ - 0); input+; operator1 = sum; sum = 0; while(*input != ) *temp+ = *input+; input+; *temp = 0; if (strlen(ope) 1 ) *output+ = 0; *output = 0; return; while(*input != 0) /获得操作数 2 sum = sum*10 + (*input+ - 0); operator2 =
7、sum; sum = 0; switch (*ope) case +:itoa(operator1+operator2,pOutputStr,10); break; case -:itoa(operator1-operator2,pOutputStr,10); break; default: *output+ = 0; *output = 0; return; int main() char input = “4 - 7“; char output = “ “; arithmetic(input,strlen(input),output); cout #define N 50 void sort(int a,int n); int main(void) char str100; int aN=0; gets(str); /要点 1:动态的输入 1-50个整数,不能确定个数,只能用字符串输入,然后分离出来 int i=0; int j=0; int sign=1; while(stri!=0)