LeetCode 771 c# Edition(版本)

LeetCode 771       Jewels and Stones

(本人专注于刷leetcode全部题c#语言算法,后期发视频教程)

得意  相信有些人看到这道题目的时候不会一下子明白。

首先解释一下题意:

    理解/核心:   J  中字符 在 S 中出现的次数,区分大小写。

题目:

You're given strings J representing the types of stones that are jewels, and S representing the stones you have.  Each character in S is a type of stone you have.  You want to know how many of the stones you have are also jewels.

The letters in J are guaranteed distinct, and all characters in J and S are letters. Letters are case sensitive, so "a" is considered a different type of stone from "A".

Example 1:                        解释:a字母出现在S的字符串中的次数为1,A 出现在S字符串的次数为2    .   1+2=3的问题!!!!    

Input: J = "aA", S = "aAAbbbb"
Output: 3

Example 2:                       解释:z在S中出现了0次,结果为0,原因:区分大小写。(读懂了题目就简单了)

Input: J = "z", S = "ZZ"
Output: 0

c#版本答案:(未考虑时间复杂度,较为理解)

        static void Main(string[] args)
        {
            string J = "zZsu";
            string P = "zZZasuidassssssss";
            int pc = GetNum(J, P);
            Console.WriteLine(pc);
            Console.ReadKey(); 
        }
        public static int GetNum(string J,string P)
        {
            int num = 0;
            for (int i = 0; i < P.Length; i++)
            {
                for (int j = 0; j < J.Length; j++)
                {
                    if (J[j] == P[i])
                    {
                        num++;
                    }
                }
            }
            return num;  
        }

c#版本答案:(考虑空间复杂度的算法)

            int[]count =new int[64];
            char[] ooo= J.ToCharArray();
            for (char c=' ' ; c < J.ToCharArray().Length; c++)
            {
                count[c - 'A']++;
            }
            int ans = 0;
            for (char c =' '; c < P.ToCharArray().Length; c++)
            {
                if (count[c - 'A'] >= 1)
                    ans++;
            }
            return ans;
       如果对答案有异议,欢迎各路大神指点,并在评论区留下c#代码,相互学习。

猜你喜欢

转载自blog.csdn.net/us2019/article/details/79377099