剑指offer 面试题35扩展:删除字符串中所有重复出现的字符 (C++版)
来源:互联网 发布:公众号积分商城源码 编辑:程序博客网 时间:2024/06/05 04:40
1、题目描述:
定义一个函数,删除字符串中所有重复出现的字符。例如输入“google”,删除重复的字符之后的结果是“gole”。
2、思路分析:
创建一个bool型数组作为哈希表,数组下标对应字符的ascii码,数组的值表示其下标对应的字符在字符串中是否已经出现过。扫描字符串,未出现过,则保留并将哈希表中对应值设置为已出现过。已出现过,则删除。
删除字符时采用重构字符串的思路(详细请看我的上一篇博客:如何在字符串中删除一个字符)。
3、代码及测试:
#include <iostream>#include <assert.h>using namespace std;//删除字符串中所有重复的字符,例如google,删除重复字符后为golechar * deleteRepeatedChars(char *pString) {if(pString == NULL || strlen(pString) == 1) return pString;//设置一个bool型数组来实现哈希表,key为数组下表(对应字符的ascii码),value为数组下标对应的字符是否已经在字符串中出现过const int tableSize = 256;bool hashTable[ tableSize ];memset(hashTable, 0, sizeof(hashTable));char *slow = pString;char *fast = pString;while( *fast != '\0') {if( !hashTable[ *fast ]) {hashTable[ *fast ] = 1;*slow = *fast;slow ++;}fast ++;}*slow = '\0';return pString;}void test1() { cout << "*****test1 pString中没有重复字符:*****";char text[] = "abcdefg";char *pString = text;pString = deleteRepeatedChars(pString);cout << pString << endl;}void test2() { cout << "*****test2 pString中有重复字符:*****";char text[] = "aabcdccefgeeh";char *pString = text;pString = deleteRepeatedChars(pString);cout << pString << endl;}void test3() {cout << "*****test3 pString中只有一个字符:*****";char text[] = "a";char *pString = text;pString = deleteRepeatedChars(pString);cout << pString << endl;}int main() {test1();test2();test3();return 0;}
阅读全文
1 0
- 剑指offer 面试题35扩展:删除字符串中所有重复出现的字符 (C++版)
- 剑指Offer----面试题35:扩展----删除字符串中所有重复出现的字符 & 变位词
- 剑指Offer----面试题35:扩展----第一个字符串中删除第二个字符串中出现过的所有字符
- 剑指offer 面试题35扩展:从第一个字符串中删除第二个字符串中的所有字符 (C++版)
- 剑指Offer----面试题28----扩展:字符的所有组合
- 剑指offer 面试题35 字符串中第一个出现一次的字符
- 剑指Offer中面试题28的扩展问题(求字符的所有组合)
- 删除字符串中所有重复出现的字符
- C++实现删除字符串中所有重复出现的字符
- 《剑指Offer》面试题:按字典序打印出该字符串中字符的所有排列
- 剑指Offer 面试题35:第一个只出现一次的字符 解题报告(华为OJ034-找出字符串中第一个只出现一次的字符)
- 【剑指offer】删除在另一个字符串中出现的字符
- 《剑指Offer》:删除在另一个字符串中出现的字符
- 【剑指offer】删除在另一个字符串中出现的字符
- 《剑指Offer》学习笔记--面试题55:字符流中第一个不重复的字符
- 【剑指Offer学习】【面试题55:字符流中第一个不重复的字符】
- 剑指offer-面试题55:字符流中第一个不重复的字符
- 《剑指Offer》面试题55:字符流中第一个不重复的字符
- Linux打开、关闭防火墙,打开某端口的命令
- spring mybatis 整合
- IntelliJ IDEA+SpringBoot+Tomcat部署404问题
- Django进阶之CSRF
- 读《程序员》2017年6期
- 剑指offer 面试题35扩展:删除字符串中所有重复出现的字符 (C++版)
- 自定义底部导航
- hive的最简单部署
- spring mvc 知识点
- 初始MyBatis以及idea创建maven项目速度慢
- 2017 百度之星预赛1004
- Unity预计算全局光照的学习(速度优化,LightProbe,LPPV)
- Oracle之:查询锁表,删除锁表
- 【IDE】IntelliJ IDEA (Mac) 运行速度优化(问题起因:debug模式突然变得巨慢)