Permutation in String

来源:互联网 发布:淘宝运动鞋女质量 编辑:程序博客网 时间:2024/05/25 12:22

Permutation in String

Given two strings s1 and s2, write a function to return true if s2 contains the permutation of s1. In other words, one of the first string's permutations is the substring of the second string.

Example 1:

Input:s1 = "ab" s2 = "eidbaooo"Output:TrueExplanation: s2 contains one permutation of s1 ("ba").

Example 2:

Input:s1= "ab" s2 = "eidboaoo"Output: False

Note:

  1. The input strings only contain lower case letters.
  2. The length of both given strings is in range [1, 10,000].
解析:

先统计S1中所有字母数,然后从头遍历S2查看s2中每个跟s1长度相同的字符串中字母数是否相同,相同的话表明可以组成,不同的话统计下一个字符串,若所有字符串都不同则不存在s1的排列。


代码:

class Solution {public:    bool checkInclusion(string s1, string s2) {        int s1length=s1.size();        vector<int>table(30,0);        for (int i=0; i<s1length; i++)        {            table[s1[i]-'a']++;        }        int s2length=s2.size();        if (s2length<s1length)        return false;        for (int i=0; i<=(s2length-s1length); i++)        {            vector<int>table1=table;            int flag=0;            for (int j=0; j<s1length; j++)            {                table1[s2[j+i]-'a']--;                if ( table1[s2[j+i]-'a']<0)                {                    flag=1;                    break;                }            }                        if (flag==0)            return true;        }                return false;    }};



1 0