[HackerRank]Gem Stones

版权声明:转载请联系作者,并注明出处 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;
                }
            }
        }
    }
}

时间效率:


猜你喜欢

转载自blog.csdn.net/onehao/article/details/26353043