当前位置:C++技术网 > 资讯 > 输入一个字符串,输出第一个重复的字符

输入一个字符串,输出第一个重复的字符

更新时间:2016-05-17 22:25:33浏览次数:1+次

string类封装了很多的函数,算法,方便我们来操作这个类的对象。而我们本文的中心就是找到string中第一个重复的数据元素。我们可以尝试利用C++string里的find函数。
string中 find()的应用  (rfind() 类似,只是从反向查找)
原型如下:
(1)size_t find (const string& str, size_t pos = 0) const;  //查找对象--string类对象
(2)size_t find (const char* s, size_t pos = 0) const; //查找对象--字符串
(3)size_t find (const char* s, size_t pos, size_t n) const;  //查找对象--字符串的前n个字符
(4)size_t find (char c, size_t pos = 0) const;  //查找对象--字符
结果:找到 -- 返回 第一个字符的索引
     没找到--返回   string::npos
有兴趣的,你可以查看其他函数的应用。下面,我们来看看怎么实现这个功能,我们利用的是上面函数的第四种形式,指定查找的位置pos,从这里开始查找我们要查找的数据,如果找到了,说明该元素必定重复了。下面看看算法:
#include "string"
#include "iostream"
#include "windows.h"

using namespace std;

int main()
{
	string str;
	const char *a;
	int len;
	string s;
	int i;
	int index;

	while(getline(cin,str))
	{
		len=str.length();
		a=str.c_str();
		for(i=0; i<len; i++)
		{
			index=str.find(a[i],i+1);//从i+1后开始查找元素
			if(index!=str.npos)
			{
				cout<<a[index]<<endl;
				i=len;
			}
		}
		
	}

	system("pause");
	return 0;
}
实现:

其实对于移除重复元素这一功能,我印象比较深的就是stl中的remove算法。有想学习STLremove算法的,请在本找搜索相关文章,有介绍哦!