Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
313815 陆明泽 【C5-7】删除字符串中间的* C++ 通过 100 1 MS 180 KB 1068 2025-03-23 09:36:18

Tests(1/1):


#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; }


测评信息: