OJ 系列之去重复字符串并排序

#include "stdafx.h"
#include <stdio.h>
#include <string.h>
/*
----------------------------------------------------------
第二题:去除重复字符并排序 
运行时间限制:无限制 
内容限制:    无限制 
输入:        字符串,仅由大小写的英文字母组成
输出:        去除重复字符并排序的字符串 
样例输入:    aabcdefff 
样例输出:    abcdef 
*/

/*
* Function:DelAndSort
* Usage:DelAndSort(p)
* -----------------------------------------------------
*/
void DelAndSort(char *p)
{
	int i,a[26],A[26];
	int len  = strlen(p);
	
	if(len<=0)
	{
		return;
	}

	for(i=0;i<26;i++)
	{
		a[i] = 0; //0表示该位置没有这个字母
		A[i] = 0;
	}

	int temp = 0;

	for (i=0;i<len;i++)
	{
		if (p[i]>='a'&&p[i]<='z')
		{
			temp = p[i] - 'a'; //判断它是哪一个字符
			a[temp] = a[temp] + 1; //计算该字母的个数
		}
		else
		{
			temp = p[i] - 'A'; //判断它是哪一个字符
			A[temp] = A[temp] + 1; //计算该字母的个数
		}
		
	}

	char output[52];
	int output_i = 0;
	
	for (i=0;i<26;i++)
	{
		if (A[i]!=0) //该位置有数的话
		{
			output[output_i] = 'A' + i; //先输出大写
			output_i ++;
		}
	}

	for (i=0;i<26;i++)
	{
		if (a[i]!=0) 
		{
			output[output_i] = 'a' + i; //输出小写
			output_i ++;
		}
	}

	output[output_i] = '\0';
	for (i=0;i<output_i;i++)
	{
		printf("%c",output[i]);
	}
		
}

int _tmain(int argc, _TCHAR* argv[])
{
	char str[1024];
	gets(str);
	DelAndSort(str);
	getchar();
	return 0;
}
</pre><pre code_snippet_id="629163" snippet_file_name="blog_20150327_1_1714071" name="code" class="cpp"><pre name="code" class="cpp">----------------------------------------------------------
第二题:去除重复字符并排序 
运行时间限制:无限制 
内容限制:    无限制 
输入:        字符串,由各种字符组成时
输出:        去除重复字符并排序的字符串 
样例输入:    aabcdefff 
样例输出:    abcdef 
*/

/*
* Function:DelAndSort
* Usage:DelAndSort(p)
* -----------------------------------------------------
*/
void DelAndSortForStr(char *p)
{
	int i,a[128];
	int len  = strlen(p);

	if(len<=0)
	{
		return;
	}

	for(i=0;i<128;i++)
	{
		a[i] = 0; //0表示该位置没有这个字母
	}

	int temp = 0;

	for (i=0;i<len;i++)
	{	
		temp = p[i] - 0; //判断它是哪一个字符
		a[temp] = a[temp] + 1; //计算该字母的个数		
	}

	char output[128];
	int output_i = 0;

	
	for (i=0;i<128;i++)
	{
		if (a[i]!=0) 
		{
			output[output_i] = 0 + i; //输出小写
			output_i ++;
		}
	}

	output[output_i] = '\0';
	for (i=0;i<output_i;i++)
	{
		printf("%c",output[i]);
	}
}


 
 
 

你可能感兴趣的:(C++,华为机试)