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小时内删除。