美文网首页
771Jewels and Stones问题

771Jewels and Stones问题

作者: akari_insomnia | 来源:发表于2018-02-14 17:00 被阅读0次

    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:

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

    Example 2:

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

    Note:

    S and J will consist of letters and have length at most 50.

    The characters in J are distinct.

    第一次提交代码

    class Solution {

    public:

        int numJewelsInStones(string J, string S) {

            int li=J.length();

            int lj=S.length();

            int count=0;

            for(int i=0;i<li;i++)

            {

                    for(int j=0;j<lj;j++)

                    {

                            if(S[j]==J[i])

                                count++;

                    }

            }

            return count;

        }

    }

    时间复杂度O(MN)

    LeetCode上最优解

    int numJewelsInStones(stringJ,stringS){

        int res =0;

        set <char> setJ(J.begin(), J.end());

        for(chars : S)

            if(setJ.count(s)) 

                res++;

        return res; 

     }

    此方法可以做到O(N)

    此方法使用到了set方法,若要使用,需引入#include<set>

    属于c++中的stl部分,不熟悉

    相关文章

      网友评论

          本文标题:771Jewels and Stones问题

          本文链接:https://www.haomeiwen.com/subject/hwmetftx.html