[转]去掉字符串中重复的字符 --- 华为笔试题
来源:互联网 发布:龙之信条萝莉捏脸数据 编辑:程序博客网 时间:2024/05/22 06:14
转载:http://blog.csdn.net/vincent040/article/details/6902631
题目如题所示,将 “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; }
/*这个是我自己实现的,不过标记那部分,还是林老师的比较精辟点*/
#include <stdio.h>#define FLAG -1void strip(char *buf){int i = 0;int j = 0;int temp = 0;if (buf == NULL)return;/*标记重复字符*//*for (i=0; buf[i] != '\0'; i++){for (j=0; buf[j] != '\0'; j++) {if (i == j){continue;}else{if ((buf[i] == buf[j]) && (buf[j] != FLAG)){buf[j] = FLAG;}}}}*/ /*标记重复字符*/for(i=1; buf[i] != '\0'; i++) { for(j=0; j<i; j++) { if(buf[j] == buf[i]) { buf[i] = FLAG; break; }} }/*找字符 --> 填坑*/for (i=0; buf[i] != '\0'; i++) {/*找坑*/if (buf[i] != FLAG){continue;}/*保存现场*/temp = i;i++;/*找字符*/while (buf[i] == FLAG){i++;}/*开始填坑*/if (buf[i] != '\0'){buf[temp] = buf[i];buf[i] = FLAG;}else/*提前退出填坑*/{buf[temp] = '\0';return;}/*恢复现场*/ i = temp;}buf[temp+1] = '\0';} int main(void){char buf[64] = {0};fgets(buf, 64, stdin);strip(buf);printf("%s\n", buf);return 0;}
0 0
- [转]去掉字符串中重复的字符 --- 华为笔试题
- 去掉字符串中重复的字符 --- 华为笔试题
- 去掉字符串中重复的字符
- 去掉字符串中重复的字符
- javascript去掉字符串中重复的字符
- javascript去掉字符串中重复的字符
- 去掉字符串中重复字符
- 华为2012.09.03浙大机试题 去掉字符串中的重复字符,字符串中重复字符的压缩,根据输入计算字符串结果
- 去掉字符串中重复的字符并排序
- 华为笔试:删除字符串中出现次数最少的字符
- 华为笔试1 去除重复字符并排序的字符串 c++ string 实现
- YY笔试题: 输出一个字符串中没有重复的字符。如“baaca”输出“bac”
- 【Java笔试题】输出字符串中第一个不重复的字符
- [转]去掉字符串中重复的子字符串
- 去掉字符串中重复的子字符串
- 华为OJ平台试题 ——字符串:打印字符串中重复的字符
- 黑马程序员_去掉字符串中连续重复字符函数
- Cracking coding interview(1.3)去掉字符串中重复字符
- oracle查询当前系统时间
- 【Redis笔记】 第1篇: redis基本概念简介
- Quotient Polynomial
- JAVA框架之Spring【Spring事务详解】
- Multithreading For Performanc
- [转]去掉字符串中重复的字符 --- 华为笔试题
- 网页常见错误代码分析整理
- 黑马程序员_异常
- 从上往下分层打印二叉树
- pig常见错误汇总
- Linux设备模型(二)上层容器
- 数组排序
- Steps
- 【LeetCode】Reverse Integer