题目如题所示,将 “google” 弄成“gole”
解决代码如下:
// strip.c #include <stdio.h> #include <string.h> #define REDUNDANT -1 void strip(char *str) { if(str == NULL) return; int i, j; char *p = str; // mark all redundant letters for(i=1; str[i] != '\0'; i++) { for(j=0; j<i; j++) { if(p[j] == str[i]) { str[i] = REDUNDANT; break; } } } /* ** locate the first redundant letter and ** the first common letter after it. */ int redun = 0, common = 0; for(i=1; str[i] != '\0'; i++) { if(str[i] != REDUNDANT) continue; redun = i; while(str[i] == REDUNDANT) i++; common = i; break; } // no repeat letter if(redun == 0) return; /* ** move all common letters forward */ while(str[common] != '\0') { if(str[common] == REDUNDANT) { common++; continue; } str[redun++] = str[common]; str[common++] = REDUNDANT; } str[redun] = '\0'; } int main(void) { char buf[64]; fgets(buf, 64, stdin); strip(buf); printf("%s", buf); return 0; }