LeetCode567. 字符串的排列

class Solution {
    
    
public:
    bool checkInclusion(string s1, string s2) {
    
    

        if (s1.size() > s2.size())
        {
    
    
            return false;
        }

        int s1map[26] = {
    
     0 };
        int s2map[26] = {
    
     0 };

        for (int i = 0; i < s1.size();i++)
        {
    
    
            s1map[s1[i] - 'a']++;
            s2map[s2[i] - 'a']++;
        }

        for (int i = 0; i < s2.size() - s1.size();i++)
        {
    
    
            if (matches(s1map, s2map))
            {
    
    
                return true;
            }

            s2map[s2[i + s1.size()] - 'a']++;
            s2map[s2[i] - 'a']--;
        }
        return matches(s1map, s2map);
    }

    bool matches(int a[26], int b[26])
    {
    
    
        for (int i = 0; i < 26;i++)
        {
    
    
            if (a[i] != b[i])
            {
    
    
                return false;
            }
        }
        return true;
    }
};

猜你喜欢

转载自blog.csdn.net/qq_32862515/article/details/109295568
今日推荐