列表

详情


OR46. 字符集合

描述

输入一个字符串,求出该字符串包含的字符集合,按照字母输入的顺序输出。

数据范围:输入的字符串长度满足  ,且只包含大小写字母,区分大小写。

本题有多组输入

输入描述

每组数据输入一个字符串,字符串最大长度为100,且只包含字母,不可能为空串,区分大小写。

输出描述

每组数据一行,按字符串原有的字符顺序,输出字符集合,即重复出现并靠后的字母不输出。

示例1

输入:

abcqweracb

输出:

abcqwer

示例2

输入:

aaa

输出:

a

原站题解

C 解法, 执行用时: 1ms, 内存消耗: 344KB, 提交时间: 2018-08-09


#include "stdlib.h"
#include "stdio.h"
#include "memory.h"
#include "string.h"

int ComPareStr(char *Input,char *Output)
{
	int i,j;
	int len;
	len=strlen(Input);
	int flag=0;
	int cnt=0;
	
	for(i=0;i<len;i++)
	{
		flag=0;
		for(j=0;j<cnt;j++)
		{
			if(Input[i]==Output[j])
			{
				flag=1;
				break;
			}
		}
		if(flag==0)
		{
			Output[cnt]=Input[i];
			cnt++;
		}
	}
	return cnt;
}

int main()
{
	char Input[100];
	char Output[100];
    int len;
    int i;
    int TestN=0;
	while(~scanf("%s",&Input))
	{
        TestN++;
      //  scanf("%s",&Input);
		len=ComPareStr(Input,Output);
        //len=strlen(Output);
        
        for(i=0;i<len;i++)
        {
             printf("%c",Output[i]);
        }
       
		printf("\n");
        Output[0]='\0';
        Input[0]='\0';
	}

	return 0;
}

C 解法, 执行用时: 1ms, 内存消耗: 360KB, 提交时间: 2020-08-06

#include <stdio.h>
int main()
{
    char str[100];
    
    while (scanf("%s", &str) != EOF)
    {
        int a[256] = { 0 };
        for (int i = 0; str[i] != '\0'; i++)
        {       
            a[str[i]] ++;
            if (a[str[i]] == 1)
                printf("%c", str[i]);
        }
        printf("\n");
    }
    return 0;
}

上一题