求c++大神解答,删除字符串中重复字母程序 如下
#include<iostream>#include<string>#include<cstring>usingnamespacestd;stringdelete_rep...
#include<iostream>
#include<string>
#include<cstring>
using namespace std;
string delete_repeats(string a, int n)
{
string b;
int c = 0;
for (int i = 0; i < n; i++)
{
for (int j = i + 1; j < n; j++)
{
if (a[i] == a[j])
{
a[j] = 0;
}
}
}
for (int k = 0; k < n; k++)
{
if (a[k] == 0)
c = c + 1;
else
b[k] = a[k + c];
}
return b;
}
int main()
{
string str;
cin >> str;
cout << delete_repeats(str, 127);
return 0;
} 展开
#include<string>
#include<cstring>
using namespace std;
string delete_repeats(string a, int n)
{
string b;
int c = 0;
for (int i = 0; i < n; i++)
{
for (int j = i + 1; j < n; j++)
{
if (a[i] == a[j])
{
a[j] = 0;
}
}
}
for (int k = 0; k < n; k++)
{
if (a[k] == 0)
c = c + 1;
else
b[k] = a[k + c];
}
return b;
}
int main()
{
string str;
cin >> str;
cout << delete_repeats(str, 127);
return 0;
} 展开
1个回答
展开全部
#include<iostream>
#include<string>
//#include<cstring> 使用c++的string头文件足矣
using namespace std;
//string delete_repeats(string a, int n) 不需要字符串长度参数n, 可以使用string.size()或者string.length()获得
string delete_repeats(string a)
{
string b; //定义一个空字符串
int n = a.size(); //获取字符串a的长度
//int c = 0;不需要这样做
for (int i = 0; i < n; i++)
{
for (int j = i + 1; j < n; j++)
{
if (a[i] == a[j])
{
a[j] = 0;
}
}
}
for (int k = 0; k < n; k++)
{
//if (a[k] == 0)
//c = c + 1;
//else
//b[k] = a[k + c]; //此处的字符串b[k]由于有的a[k]为0, 有的非0, 使得b[k]断断续续, 而且a[k+c]下标会溢出
if (a[k] != 0) //string类重载了+运算符, 可以使用b = b + a[k]将a[k]字符复制到字符串b的末尾
b += a[k];
}
/*
当然也可以用如下方式获取字符串b, 用c表示字符串b的有效字符
for (int k = 0; k < n; k ++)
if (a[k] != 0)//有效
b[c ++] = a[k];
b[c] = '\0'; //标记字符串结尾
*/
return b;
}
int main()
{
string str;
cin >> str;
//cout << delete_repeats(str, 127);
cout << delete_repeats(str);
return 0;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询