Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
313815 | 陆明泽 | 【C5-7】删除字符串中间的* | C++ | 通过 | 100 | 1 MS | 180 KB | 1068 | 2025-03-23 09:36:18 |
#include <stdio.h> #include <string.h> #define MAX_LENGTH 1000 void remove_middle_asterisks(char *str) { int len = strlen(str); int start = 0; int end = len - 1; // 找到前导 * 的结束位置 while (start < len && str[start] == '*') { start++; } // 找到后缀 * 的开始位置 while (end >= 0 && str[end] == '*') { end--; } // 复制非 * 字符到新位置 int new_index = start; for (int i = start; i <= end; i++) { if (str[i] != '*') { str[new_index] = str[i]; new_index++; } } // 复制后缀 * for (int i = end + 1; i < len; i++) { str[new_index] = str[i]; new_index++; } // 添加字符串结束符 str[new_index] = '\0'; } int main() { char str[MAX_LENGTH]; fgets(str, MAX_LENGTH, stdin); // 去除 fgets 可能读取的换行符 str[strcspn(str, "\n")] = 0; remove_middle_asterisks(str); printf("%s\n", str); return 0; }