zoukankan      html  css  js  c++  java
  • 290. Word Pattern

    原文题目:

    290. Word Pattern

    读题:

    看到这种一一映射,很自然想到STL中的map容器

    具体解题思路看代码注释

    class Solution 
    {
    public:
    	bool wordPattern(string pattern, string str) 
    	{
    		unordered_map <char,string> mapleft;
    		unordered_map <string,char> mapright;
    		vector <string> vec;
    		int i = 0;
    		int j = 0;
    		//将字符串按照空格分割放入容器vec中
    		for(;i<str.size();i++)
    		{
    			if(' '==str[i])
    			{
    				string tempstr = str.substr(j,i-j);
    				vec.push_back(tempstr);
    				j = i +1;
    			}
    			if(i == str.size() - 1)
    			{
    				string endstr = str.substr(j,i-j+1);
    				vec.push_back(endstr);
    			}
    		}
    
    		if(pattern.size()!=vec.size()) return false;
    		//建立两者之间的正序和反序的map映射
    		for(i = 0;i <pattern.size();i++)
    		{
    			//若原map中没有则加入
    			if(mapleft.find(pattern[i]) == mapleft.end()&&mapright.find(vec[i]) == mapright.end())
    			{
    				mapleft.insert(make_pair(pattern[i],vec[i]));
    				mapright.insert(make_pair(vec[i],pattern[i]));
    			}
    			//查找map看是否一一相对应
    			else if(mapleft[pattern[i]]!=vec[i] || mapright[vec[i]]!=pattern[i])
    			{
    				return false;
    			};
    		}
    		return true;
    
    	}
    };
    

      

  • 相关阅读:
    每日日报2021.2.5
    每日日报2021.2.4
    每日日报2021 3/8
    每日日报2021 3/7
    每日日报2021 3/6
    每日日报2021 3/5
    每日日报 2021 3.4
    每日日报2021 3/3
    开课博客
    217. Contains Duplicate
  • 原文地址:https://www.cnblogs.com/xqn2017/p/8406847.html
Copyright © 2011-2022 走看看