重复字符过滤

2024-04-28 15:38
文章标签 重复 字符 过滤

本文主要是介绍重复字符过滤,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目描述(60分):

通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。比如字符串“abacacde”过滤结果为“abcde”。

要求实现函数: voidstringFilter(const char *pInputStr, long lInputLen, char *pOutputStr);

输入:    pInputStr:  输入字符串

                lInputLen:  输入字符串长度        

输出:    pOutputStr: 输出字符串,空间已经开辟好,与输入字符串等长;

注意:只需要完成该函数功能算法,中间不需要有任何IO的输入输出

示例:

输入:“deefd”         输出:“def”

输入:“afafafaf”        输出:“af”

输入:“pppppppp”   输出:“p”

代码:

#include <iostream>
using namespace std;
void stringFilter(const char* pInputStr, long lInputLen, char* pOutputStr)
{int i = 0, j = 0;pOutputStr[j] = pInputStr[i];while (pInputStr[++i] != '\0'){int flag = 0;for (int k = 0; k <= j; k++){if (pOutputStr[k] == pInputStr[i]){flag = 1;break;}}if (flag == 0){pOutputStr[++j]=pInputStr[i];}}pOutputStr[++j] = '\0';
}int main()
{char input[20] = "deefd";char output[20];stringFilter(input, 20, output);cout << output << endl;char input1[20] = "afafafaf";char output1[20];stringFilter(input1, 20, output1);cout << output1 << endl;char input2[20] = "ppppppppp";char output2[20];stringFilter(input2, 20, output2);cout << output2 << endl;cin.get();return 0;
}

或者

#include <iostream>
using namespace std;
void stringFilter(const char* pInputStr, long lInputLen, char* pOutputStr)
{int Zimu[26] = { 0 };int i = 0;Zimu[pInputStr[i] - 'a'] = 1;*pOutputStr = pInputStr[i];while (pInputStr[++i] != '\0'){if (Zimu[pInputStr[i] - 'a'] == 0){++pOutputStr;*pOutputStr = pInputStr[i];Zimu[pInputStr[i] - 'a'] = 1;}}++pOutputStr;*pOutputStr = '\0';
}
int main()
{char input[20] = "deefd";char output[20];stringFilter(input, 20, output);cout << output << endl;char input1[20] = "afafafaf";char output1[20];stringFilter(input1, 20, output1);cout << output1 << endl;char input2[20] = "ppppppppp";char output2[20];stringFilter(input2, 20, output2);cout << output2 << endl;cin.get();return 0;
}


这篇关于重复字符过滤的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/943623

相关文章

MySQL中查找重复值的实现

《MySQL中查找重复值的实现》查找重复值是一项常见需求,比如在数据清理、数据分析、数据质量检查等场景下,我们常常需要找出表中某列或多列的重复值,具有一定的参考价值,感兴趣的可以了解一下... 目录技术背景实现步骤方法一:使用GROUP BY和HAVING子句方法二:仅返回重复值方法三:返回完整记录方法四:

XML重复查询一条Sql语句的解决方法

《XML重复查询一条Sql语句的解决方法》文章分析了XML重复查询与日志失效问题,指出因DTO缺少@Data注解导致日志无法格式化、空指针风险及参数穿透,进而引发性能灾难,解决方案为在Controll... 目录一、核心问题:从SQL重复执行到日志失效二、根因剖析:DTO断裂引发的级联故障三、解决方案:修复

SpringBoot+Redis防止接口重复提交问题

《SpringBoot+Redis防止接口重复提交问题》:本文主要介绍SpringBoot+Redis防止接口重复提交问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录前言实现思路代码示例测试总结前言在项目的使用使用过程中,经常会出现某些操作在短时间内频繁提交。例

C#如何去掉文件夹或文件名非法字符

《C#如何去掉文件夹或文件名非法字符》:本文主要介绍C#如何去掉文件夹或文件名非法字符的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C#去掉文件夹或文件名非法字符net类库提供了非法字符的数组这里还有个小窍门总结C#去掉文件夹或文件名非法字符实现有输入字

C#之List集合去重复对象的实现方法

《C#之List集合去重复对象的实现方法》:本文主要介绍C#之List集合去重复对象的实现方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C# List集合去重复对象方法1、测试数据2、测试数据3、知识点补充总结C# List集合去重复对象方法1、测试数据

使用C#删除Excel表格中的重复行数据的代码详解

《使用C#删除Excel表格中的重复行数据的代码详解》重复行是指在Excel表格中完全相同的多行数据,删除这些重复行至关重要,因为它们不仅会干扰数据分析,还可能导致错误的决策和结论,所以本文给大家介绍... 目录简介使用工具C# 删除Excel工作表中的重复行语法工作原理实现代码C# 删除指定Excel单元

Java如何用乘号来重复字符串的功能

《Java如何用乘号来重复字符串的功能》:本文主要介绍Java使用乘号来重复字符串的功能,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java乘号来重复字符串的功能1、利用循环2、使用StringBuilder3、采用 Java 11 引入的String.rep

SQL常用操作精华之复制表、跨库查询、删除重复数据

《SQL常用操作精华之复制表、跨库查询、删除重复数据》:本文主要介绍SQL常用操作精华之复制表、跨库查询、删除重复数据,这些SQL操作涵盖了数据库开发中最常用的技术点,包括表操作、数据查询、数据管... 目录SQL常用操作精华总结表结构与数据操作高级查询技巧SQL常用操作精华总结表结构与数据操作复制表结

Springboot实现推荐系统的协同过滤算法

《Springboot实现推荐系统的协同过滤算法》协同过滤算法是一种在推荐系统中广泛使用的算法,用于预测用户对物品(如商品、电影、音乐等)的偏好,从而实现个性化推荐,下面给大家介绍Springboot... 目录前言基本原理 算法分类 计算方法应用场景 代码实现 前言协同过滤算法(Collaborativ

idea报错java: 非法字符: ‘\ufeff‘的解决步骤以及说明

《idea报错java:非法字符:‘ufeff‘的解决步骤以及说明》:本文主要介绍idea报错java:非法字符:ufeff的解决步骤以及说明,文章详细解释了为什么在Java中会出现uf... 目录BOM是什么?1. BOM的作用2. 为什么会出现 \ufeff 错误?3. 如何解决 \ufeff 问题?最