版权声明:转载请联系作者,并注明出处 https://blog.csdn.net/onehao/article/details/26353043
Gem Stones
John 发现了很多种岩石。每种岩石都有一个独一无二成分:由小写英文字母组成。宝石是由一个单一的字符组成,并且将在所有岩石中出现。
给出一些岩石的成分,输出有多少种不同的宝石存在。
输入格式
第一行包含一个整数 N, 代表岩石的个数
接下来的N行,每行包含岩石的构成,由小写的英文字母组成。
输出格式
输出有多少种不同的宝石
数据范围
1 ≤ N ≤ 100
1 ≤ 代表岩石组成的英文单词长度 ≤ 100
样例输入
3
abcdde
baccd
eeabg
样例输出
2
样例解释
只有"a", "b"两种不同的宝石,因为它们包含在每种岩石的成分中。
思路:只需要计算出在各个数组中都出现的字母的个数, 可以用一个长度为26的bit vector来存储字母在各个数组中是否出现,1为出现,0为未出现。
代码如下。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Gem_Stones
{
class Program
{
static void Main(string[] args)
{
int N = int.Parse(Console.ReadLine());
char[] values;
List<bool[]> list = new List<bool[]>();
for (int i = 0; i < N; i++)
{
values = Console.ReadLine().ToLowerInvariant().ToCharArray();
bool[] set = new bool[26];
InitializedBitVector(values, set);
list.Add(set);
}
bool result = true;
int count = 0;
for (int i = 0; i < 26; i++)
{
foreach (var s in list)
{
result = s[i];
if (!result) break;
}
if(result) count++;
result = true;
}
Console.WriteLine(count);
Console.ReadKey();
}
private static void InitializedBitVector(char[] values, bool[] set)
{
foreach (var value in values)
{
switch (value)
{
case 'a':
set[0] = true;
break;
case 'b':
set[1] = true;
break;
case 'c':
set[2] = true;
break;
case 'd':
set[3] = true;
break;
case 'e':
set[4] = true;
break;
case 'f':
set[5] = true;
break;
case 'g':
set[6] = true;
break;
case 'h':
set[7] = true;
break;
case 'i':
set[8] = true;
break;
case 'j':
set[9] = true;
break;
case 'k':
set[10] = true;
break;
case 'l':
set[11] = true;
break;
case 'm':
set[12] = true;
break;
case 'n':
set[13] = true;
break;
case 'o':
set[14] = true;
break;
case 'p':
set[15] = true;
break;
case 'q':
set[16] = true;
break;
case 'r':
set[17] = true;
break;
case 's':
set[18] = true;
break;
case 't':
set[19] = true;
break;
case 'u':
set[20] = true;
break;
case 'v':
set[21] = true;
break;
case 'w':
set[22] = true;
break;
case 'x':
set[23] = true;
break;
case 'y':
set[24] = true;
break;
case 'z':
set[25] = true;
break;
}
}
}
}
}
时间效率: