您的位置:首页 > 移动开发 > IOS开发

题目:剔除一个字符中重复的字符,然后按ASCII码值从小到大排列。 例如,输入:abbcccddeeeffgghh 输出:abcdefgh 注意:1、剔除是整个字符串中重复的字符,而不是连续的字符 2

2014-03-24 21:38 671 查看
#include <iostream>
using namespace std;

void paixu(char *string, int length)
{
char temper;
int i,j;
if (string == NULL || length <2)
return;
for (i = 1; i < length; i++)
{
for (j = 0; j < length-i; j++)
{
if (string[j] > string[j+1])
{
temper = string[j];
string[j] = string[j+1];
string[j+1] = temper;
}
}
}
cout<<string<<endl;
}
void delete_(char* string, int length)
{
if (string == NULL || length < 2)
return;
char *s = new char[length+1]; //若字符串中无重复字符,则s需要length+1的空间
int j = 0;
s[0] = string[0];
for (int i = 0; i < length; i++)
{
if (string[i] != string[i+1])
{
j++;
s[j] = string[i+1];  //若字符串中无重复字符,则s需要(length+1)*sizeof(char)的空间,string末尾的'\0'也被输入到s
}
}
strcpy(string,s);
cout<<string<<endl;
delete[] s;
}
void main()
{
char str[256];
int len;
cin>>str;
len = strlen(str);
paixu(str,len);
delete_(str,len);
cout<<str<<endl;
getchar();
getchar();
}
//getchar();是为了看到输出结果,不然程序结束后,控制台会闪现。加2个getchar();是因为第一个getchar();获取了输入字符的回车键,程序仍然会结束,需再加一个才会等待输入。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  iostream namespace
相关文章推荐