华为校园招聘笔试算法题汇总.doc
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
华为校园招聘笔试算法题汇总 华为校园招聘笔试算法题汇总中包含了多道算法题目,涵盖了字符串处理、压缩、过滤等多方面的知识点。本文将对其中的几道题目进行详细解释和分析。 一、字符串过滤 问题描述:编写一个字符串过滤函数,输入一个字符串,输出一个过滤后的字符串,要求去除字符串中出现多次的字符,保留第一次出现的字符。例如,输入字符串“abacacde”,输出字符串“abcde”。 解决方案: 使用bool类型的数组g_flag来标记每个小写字母是否已经出现过。在遍历输入字符串时,如果当前字符已经出现过,则跳过该字符,否则将其添加到输出字符串中,并标记该字符已经出现过。最后将输出字符串的结尾添加'\0'以表示字符串的结束。 代码实现: ```cpp bool g_flag[26]; void stringFilter(const char *pInputStr, long lInputLen, char *pOutputStr) { assert(pInputStr != NULL); int i = 0; if (pInputStr == NULL || lInputLen <= 1) { return; } const char *p = pInputStr; while (*p != '\0') { if (g_flag[(*p - 'a')]) { p++; } else { pOutputStr[i++] = *p; g_flag[*p - 'a'] = 1; p++; } } pOutputStr[i] = '\0'; } ``` 二、字符串压缩 问题描述:编写一个字符串压缩函数,输入一个字符串,输出一个压缩后的字符串,将字符串中连续出席的重复字母停顿压缩,并输出压缩后的字符串。例如,输入字符串“xxxyyyyyyz”,输出字符串“3x6yz”。 解决方案: 使用一个变量count来记录当前字符的重复次数,在遍历输入字符串时,如果当前字符与前一个字符相同,则增加count的值,否则将count的值输出到输出字符串中,并reset count的值。最后将输出字符串的结尾添加'\0'以表示字符串的结束。 代码实现: ```cpp void stringZip(const char *pInputStr, long lInputLen, char *pOutputStr) { assert(pInputStr != NULL); int i = 0; int count = 1; char c = *pInputStr; pOutputStr[i++] = c; for (int j = 1; j < lInputLen; j++) { if (pInputStr[j] == c) { count++; } else { pOutputStr[i++] = '0' + count; pOutputStr[i++] = c; count = 1; c = pInputStr[j]; } } pOutputStr[i++] = '0' + count; pOutputStr[i] = '\0'; } ``` 本文对华为校园招聘笔试算法题汇总中的两道题目进行了详细解释和分析,解决方案使用了bool类型的数组和变量count来记录字符的出现情况和重复次数,最后输出压缩后的字符串。
剩余12页未读,继续阅读
- 粉丝: 38
- 资源: 27万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
评论2