重复字符过滤

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

相关文章

GO语言核心30讲 实战与应用 (WaitGroup和Once,context,Pool,Map,字符编码,string包,bytes包)

原站地址:Go语言核心36讲_Golang_Go语言-极客时间 一、sync.WaitGroup和sync.Once 1. sync.WaitGroup 比通道更加适合实现一对多的 goroutine 协作流程。 2. WaitGroup类型有三个指针方法:Wait、Add和Done,以及内部有一个计数器。 (1) Wait方法:阻塞当前的 goroutine,直到计数器归零。 (2)

Vue3实战Easy云盘(三):文件删除+文件移动+目录导航+上传优化/文件过滤/搜索

一、文件删除 (1)选中了之后才可以删除,没有选中时就显示暗调删除按钮 (2)实现选中高亮功能 (3)单个删除 (4)批量删除 Main.vue中  <!-- 按钮3 --><!-- 如果selectFileIdList数组的长度为0(即数组为空),则HTML元素的disabled属性将被设置为true,从而使该元素变为禁用状态 --><el-butto

4.2 试编写一程序,要求比较两个字符串STRING1和STRING2所含字符是否相同,若相同则显示“MATCH”,若不相同则显示“NO MATCH”

方法一:在程序内部设置两个字符串内容,终端返回是否匹配 运行效果: 思路: 1、先比较两个字符串的长度,如果长度不一样,则两组字符串肯定不匹配;如果长度一样,再进行内容的匹配 2、如果两组字符串长度一样,使用“REPE   CMPSB”指令比较两个字符串的内容是否相等。如果相等,打印MATCH;如果不相等,打印NO MATCH。 代码如下: DATA SEGMENTSTRING1

推荐系统介绍:(协同过滤)—Intro to Recommender Systems: Collaborative Filtering

本文试验前期准备: MovieLens  ml-100k数据集Jupyter notebookthemoviedb.org API key  本文试验内容翻译自:http://blog.ethanrosenthal.com/2015/11/02/intro-to-collaborative-filtering/   添加python引用 import numpy as npimpo

《剑指Offer》面试题:按字典序打印出该字符串中字符的所有排列

题目描述: 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 这道题要注意两个问题:   第一个是重复字母,第二个是按字典顺序。   重复字母我们在进行交换的时候直接跳过就可以了,按字典顺序,这个就需要我们进行排列了。 思路 这个题不会做,下面的代码是来源于h

《MySQL必知必会学习笔记》过滤数据

第六章:过滤数据,即where关键字的使用 在实际过程中,我们并不需要将所有的数据显示出来,只会将我们感兴趣的行数据显示出来,例如:在老师想统计考试成绩在90~100分这个区间的有哪些人?就需要过滤数据。 如需有条件地从表中选取数据,可将 WHERE 子句添加到 SELECT 语句。 语法: SELECT 列名称 FROM 表名称 WHERE 列 运算符 值 其中的运算符包括如下(图来源

剑指offer 01-06解答思路以及代码(顺序数组找特定数字,替换空格字符,链表反转输出,重建二叉树,两个栈实现队列效果,旋转数组最小元素)

最近几天开始刷剑指,因为听说很多面试经典的题目都出自这里,所以大家都在看,那么说明该书还是有其独特的地方。刷题的地点就在牛客上,牛客确实是个挺不错的平台,不过得抱怨一下没有试运行,所以有些题目出现越界的情况也无从寻找源码,就无法调到编译器里面进行调试,确实时一件挺麻烦的事情,毕竟程序就是我写出来的,一眼看下去肯定感觉没啥问题啊。。。 01 顺序数组找特定数字 题

LeetCode 02. 两数相加(链表) 03.最大不重复的字符串

02题目如上图所示,其输入为一个两个链表,输出结果为两个链表。该题大体的意思为将链表中相对应的元素进行对应相加,然后将新的元素输入到结果链表中,但需要注意的问题是再当两个输入链表相加结果出现进位的时候,需要将进位加至下一级链表之中。题目答案如下: class Solution {public:ListNode* addTwoNumbers(ListNode* l1, List

js字符操作以及正则表达式

stringObject.search(regexp) 下面介绍6个js函数: match() 找到一个或多个正则表达式的匹配。 replace() 替换与正则表达式匹配的子串。 search() 检索与正则表达式相匹配的值。 slice() 提取字符串的片断,并在新的字符串中返回被提取的部分。 substr() 从起始索引号提取字符串中指定数目的字符。 substring()

JS过滤url参数中的特殊字符

JS过滤url参数中的特殊字符 过滤url参数中特殊字符的js代码。 在URL传递参数中,有一些特殊字符,而这些些符号在URL中是不能直接传递的,如果要在URL中传递这些特殊符号,则需要考虑相关的编码问题。 一些URL特殊符号及编码十六进制值:   1. + URL 中+号表示空格 %2B 2. 空格 URL中的空格可以用+号或者编码 %20 3. / 分隔目录和子目录 %2F