c语言字符串编程题
下面是一个简单的C语言字符串编程题,你可以尝试编写一个函数来将字符串中的字符按顺序重新排列。
题目:给定一个字符串,将字符串中的字符按照顺序重新排列,使得每个字符都出现在其首次出现的位置上,并且只出现一次。
例如,给定字符串 "abcabc",重新排列后应为 "abc"。
提示:可以使用哈希表来记录每个字符首次出现的位置,然后按照哈希表中记录的顺序重新排列字符串。
以下是一个可能的实现:
c复制代码
#include <stdio.h> | |
#include <string.h> | |
#include <stdlib.h> | |
void rearrangeString(char* str) { | |
int n = strlen(str); | |
char *arr[n]; | |
int hash[256] = {0}; // 用于记录每个字符首次出现的位置 | |
for (int i = 0; i < n; i++) { | |
if (hash[str[i]] == 0) { // 如果当前字符尚未出现过 | |
字符串函数编程题hash[str[i]] = i + 1; // 记录当前字符首次出现的位置 | |
arr[i] = &str[i]; // 将当前字符存入数组中 | |
} | |
} | |
int j = 0; // 重新排列后的字符串的起始位置 | |
for (int i = 0; i < n; i++) { | |
if (hash[str[i]] != 0) { // 如果当前字符已经出现过 | |
arr[j] = &str[i]; // 将当前字符存入重新排列后的字符串中 | |
j++; // 更新重新排列后的字符串的起始位置 | |
} | |
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论