2016.3.18华为上机题目:去除重复字符并排序

运行时间限制:无限制
内容限制:       无限制
输入:              字符串
输出:              去除重复字符并排序的字符串
样例输入:       aabcdefff
样例输出:       abcdef

方法一:

<span style="font-size:18px;"><span style="font-size:18px;">#include "iostream"
using namespace std;


char * sortuser(char *p)
{
  int i,j;
  char temp;
  for(i=0;*(p+i)!='\0';i++)
     for(j=i+1;*(p+j)!='\0';j++)
	 {
		 if(*(p+i)>*(p+j))
		 {
			 temp=*(p+i);
			 *(p+i)=*(p+j);
			 *(p+j)=temp;
		 }
	 }

	 return p;

}

int main()
{
  char a[100];
  char *p;
  int i;
  cin>>a;
  p=sortuser(a);
  //cout<<p<<endl;
for(i=0;*(p+i)!='\0';i++)
{
 if(i==0)
 {
	 cout<<*(p+i);
     continue;
 }


 if(*(p+i)==*(p+i-1))
	 continue;
 else
 {
	 if(*(p+i+1)=='\0')
	     cout<<*(p+i)<<endl;
	 else
		 cout<<*(p+i);
 }

}
  return 0;

}</span></span>

方法二:

#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
int main()
{
int i,j;
char a,c[130];

string ss;
cin>>ss;


    j=0;
    for(i=0;i<128;i++) //从ASCII字符表里顺序找
{
if(ss.end()!=find(ss.begin(),ss.end(),(char)i)) {c[j]=(char)i;j++;}//不等于尾指针  说明找到了
}


    for(i=0;i<j;i++)
cout<<c[i];
cout<<endl;
return 0;
}



                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值