1. 请实现一个函数,将一个字符串中的空格替换成“%20”。
解析该题目考察字符串处理能力。首先需要计算出替换后的字符串长度,并在原字符串上进行替换操作。具体代码如下
“`tgth) {gth<= 0) {;
}tgtht = 0;t i = 0; str[i] != ‘\0’; i++) {gth++;
if (str[i] == ‘ ‘) {t++;
}
}tewLengthgtht 2;ewLengthgth) {;
}tdex1gthdex2ewLength;dex1dex2dex1) {dex1] == ‘ ‘) {dex2–] = ‘0’;dex2–] = ‘2’;dex2–] = ‘%’;
} else {dex2dex1];
}dex1–;
}
2. 请实现一个函数,判断一个字符串是否为回文字符串。
解析该题目考察字符串处理能力和算法思维能力。回文字符串是指正着读和倒着读都一样的字符串。可以使用双指针法,一个指针从前往后遍历,一个指针从后往前遍历,判断对应字符是否相等。具体代码如下
“`drome(char str) {
if (str == NULL) { false;
}tgth(str);gth<= 1) { true;
}tgth – 1;
while (left< right) {
if (str[left] != str[right]) { false;
}
left++;
right–;
} true;
3. 请实现一个函数,统计一个字符串中每个字符出现的次数,并按照出现次数从大到小输出。
解析该题目考察字符串处理能力和算法思维能力。可以使用哈希表统计每个字符出现的次数,然后按照出现次数从大到小排序输出。具体代码如下
typedef struct {
char ch;tt;t;
tpstst void b) {tttt;
tChar(char str) {
if (str == NULL) {;
}tgth(str);gth<= 1) {tf", str);;
}tt[256] = {0};tgth; i++) {t[str[i]].ch = str[i];tt++;
}ttp);t i = 0; i0) {tfttt);
}
}tf”);
以上就是华为C语言面试题的精选与解析。希望本文能够帮助大家更好地准备面试,提高自己的编程能力和思维能力。