290単語パターン - 簡単

strが同じパターンに従っている場合、パターンと文字列strを考えると、見つけます。

ここでのフォローは、パターンの文字とstr内の非空の単語の間に全単射が存在するように、完全な一致を意味します。

例1:

入力:パターン=「アバ」、STR =「犬猫猫犬」
出力:真の
例2:

入力:パターン=「アバ」、STR =「犬猫猫の魚」
出力:偽
例3:

入力:パターン=「AAAA」、STR =「犬猫猫犬」
出力:偽
例4:

入力:パターン=「アバ」、STR =「犬犬犬犬」
出力:偽
注:
あなたは、パターンが小文字のみが含まれていると仮定して、とstrは、単一のスペースで分離することができる小文字が含まれています。

1.思考

  • ベクターに格納された順次抽出境として空間STR文字列内の最初の要素。
  • 同じ位置のパターンチーム、及び比較STR要素における2つが同一である二重ループスルー。
  • 同じパターンが、が、STRが異なる場合は、falseを返します。
  • パターンが異なりますが、同じstrの場合は、falseを返します。
  • すべてのトラバースは、戻り値を持たない場合、trueを返します。

達成するために2.
は0ms(100%):ランタイム
メモリ:9メガバイト(6.09パーセント)を

class Solution {
public:
    bool wordPattern(string pattern, string str) {        
        int len = pattern.size();
        vector<string> st;
        
        int ln = str.size();
        string s = str;
        while(1){
            int pos = s.find(' ');
            if(pos>0){                
                st.push_back(s.substr(0, pos));
                s = s.substr(pos+1);
            }
            else{
                st.push_back(s);
                break;
            }
        }
        
        if(st.size() != len)
            return false;
        
        for(int i=0; i<len; i++){            
            for(int j=i+1; j<len; j++){
                if(pattern[i] == pattern[j]){
                    if(st[i] != st[j]){
                        return false;
                    }
                }
                else{
                    if(st[i] == st[j]){
                        return false;
                    }                    
                }
            }            
        }
        
        return true;        
        
    }
};

おすすめ

転載: www.cnblogs.com/xuyy-isee/p/11236357.html