內容
背景介紹,不是很重要見原題
輸入
幸(サチ/Sachi)失去記憶了,頭腦一片空白
請你幫她移除記憶中的空白,找回她的記憶吧
輸入只有一行,含有一個字串 s (|s|<=108)
s 含有所有可印出的字元(包含空白),請你移除其中的空白
移除方式如下:
若連續的空白數為偶數,則全部移除
若為奇數,則移除到只剩下一個空白
M y n am e i s S a c h i .
輸出
移除空白後剩下的字元
My name is Sachi.
解題思路
簡單的字串處理,重點在 IO 優化。
完整程式碼
AC (0.1s, 2.1MB)
#include <stdio.h> #define BUFSIZ 1048576 #define BUFMAX 1048000
char output[BUFSIZ];
inline char readChar() { static char buffer[BUFSIZ], * now = buffer + BUFSIZ, * end = buffer + BUFSIZ; if (now == end) { if (end < buffer + BUFSIZ) return 0; end = (buffer + fread(buffer, 1, BUFSIZ, stdin)); now = buffer; } return *now++; }
int main() { register char tmp, * oTop = output, isOdd = 0, *max = output + BUFMAX; while (tmp = readChar()) { if (tmp == ' ') isOdd = ~isOdd; else { if (isOdd) * oTop++ = ' ', isOdd = 0; *oTop++ = tmp; if (oTop > max) { *oTop = '\0'; fputs(output, stdout); oTop = output; } } } *oTop = '\0'; fputs(output, stdout); return 0; }
|