码迷,mamicode.com
首页 > 编程语言 > 详细

华为OJ平台试题 ——字符串:输出数组中重复的数组

时间:2015-08-19 17:06:16      阅读:236      评论:0      收藏:0      [点我收藏+]

标签:华为   华为oj平台试题   打印字符串中重复的字符   

<pre name="code" class="cpp">/*
 * 题目:输出数组中重复出现的数组(0-9)
 *
 * 输入:输入一串数字,中间以逗号隔开,如3,2,2,3,5,6,7,8,9
 * 输出:输出数组中重复出现的数字(数字间以空格隔开),输出顺序按原数组中的先后顺序,输出3,2
 */


#include<stdio.h>
#include<string.h>

#define N 256

/*  
 * 定义一个结构体:数字和数字个数
 */    
struct CountNum    
{    
    int  n;    
    int  count; 
};


int main(void)
{
	struct CountNum  ao[N];  /* 输出数组 ao */
	int   i, ai[N],  Num = 0;  /* 输入数组 ai ,Num 输入的数字个数 */
	char  str[N];
	int   len,  j,  k = 1;

	
	/* 输出数组初始化 */
	for( i = 0; i< N; i++)
	{
		ao[i].n = 0;
		ao[i].count = 0;
	}

<span style="white-space:pre">	</span>/* 将数字转换成字符输入,然后把它强制转换成数字,并统计其数目 */
	gets(str);

	len = strlen(str);

	for( i =  0; i < len; i++)
	{
		if(str[i] >= '0' && str[i] <= '9')
		{
				ai[Num] = (int)(str[i] - '0');
				Num++;
		}
	}
	
	/* 将第一个数字赋值给输出数组a[0],便于后面进行比较 */
	ao[0].n  = ai[0];
	ao[0].count = 1;

	/* 
	 * 依次将后面输入的数字与前面的第一个数字进行比较,
	 * 若是相同则其相应的count加1,若是不同将其存入后一个数组,再次进入判断时将其count加1
	 */
	for( i = 1; i < Num; i++  )
	{
		for ( j = 0 ; j < k ; j++)
		{
			if( ao[j].n == ai[i])
			{
				ao[j].count++;	
				break;
			}
			else if( ao[j].n != ai[i] && j == k - 1 )
			{
					ao[k].n = ai[i];
					k++;
			}
		
		}
	
	}

	for( i= 0; i < k; i++)
	{
		if( ao[i].count >= 2 ) 
			printf("%d ", ao[i].n );
	}
}



    
        

版权声明:本文为博主原创文章,未经博主允许不得转载。

华为OJ平台试题 ——字符串:输出数组中重复的数组

标签:华为   华为oj平台试题   打印字符串中重复的字符   

原文地址:http://blog.csdn.net/cowena/article/details/47780121

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!