#290 wordpattern

#ifndef wordpattern_hpp
#define wordpattern_hpp

#include <iostream>
#include <map>
#include <vector>
#include <sstream>
#include <stdio.h>

using namespace std;

class Solution {
public:
    bool wordPattern(string pattern, string str) {
        map<char, string> mcs;
        map<string, char> msc;
        stringstream ss{str};
        string item;
        for (auto c : pattern) {
            if(ss>>item){
                if(mcs.end() != mcs.find(c)) {
                    if (mcs[c] != item) {
                        return false;
                    }
                }else{
                    if(msc.end() != msc.find(item)){
                        return false;
                    }
                    mcs[c] = item;
                    msc[item] = c;
                }
            }else{
                return false;
            }
        }
        if(ss>>item)
            return false;
        return true;
    }
    void test(){
        struct wps{
            string pat;
            string str;
            bool res;
        };
        Solution s;
        vector<wps> tests{wps{"aaa","cat cat cat",true },
            wps{"abba","dog cat cat dog",true},
            wps{"abba","dog cat cat fish", false},
            wps{"aaaa","dog cat cat dog",false},
            wps{"abba","dog dog dog dog",false},
            wps{"aaa", "aa aa aa aa", false}};
        for (auto t : tests) {
            cout << "pattern: " << t.pat << ", str: \"" << t.str << "\" ";
            cout << ((t.res == s.wordPattern(t.pat, t.str)) ? "pass" : "fail") << ‘\n‘;
        }
    }
};

#endif /* wordpattern_hpp */

程序使用了STL的map和vector,力求简明。

时间: 2024-10-15 20:56:32

#290 wordpattern的相关文章

290. Word Pattern

/* * 290. Word Pattern * 2016-7-2 by Mingyang * 这里加上了没有containsValue,因为这里如果abba 和 dog dog dog dog通不过, * 因为a已经包含dog了,b却也包含了dog,解决方法就是value不能重复 * 直接用containsValue就好了 */ public static boolean wordPattern(String pattern, String str) { String[] array=str.

图论(KM算法):COGS 290. [CTSC2008] 丘比特的烦恼

290. [CTSC2008] 丘比特的烦恼 ★★★   输入文件:cupid.in   输出文件:cupid.out   简单对比 时间限制:1 s   内存限制:128 MB 随着社会的不断发展,人与人之间的感情越来越功利化.最近,爱神丘比特发现,爱情也已不再是完全纯洁的了.这使得丘比特很是苦恼,他越来越难找到合适的男女,并向他们射去丘比特之箭.于是丘比特千里迢迢远赴中国,找到了掌管东方人爱情的神——月下老人,向他求教. 月下老人告诉丘比特,纯洁的爱情并不是不存在,而是他没有找到.在东方,人

【一天一道LeetCode】#290. Word Pattern

一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 Given a pattern and a string str, find if str follows the same pattern. Here follow means a full match, such that there is a bijection between a letter in pa

LeetCode 290. Word Pattern

不符合的情况有三种:1.pattern和str长度不符   2.pattern中不同字母指向str中同一词(a.b->同一词)   3.同一字母指向不同词(a->不同词) 1 class Solution { 2 public: 3 vector<string> split(string str){ 4 vector<string> res; 5 string tmp = ""; 6 for(int i = 0; i < str.length(

WordPattern

Given a pattern and a string str, find if str follows the same pattern. Examples: pattern = "abba", str = "dog cat cat dog" should return true. pattern = "abba", str = "dog cat cat fish" should return false. pattern

啊啊啊,真的没啥东西好写啊【leetcode】290. Word Pattern

public class Solution { public boolean wordPattern(String pattern, String str) { String[] s=str.split(" "); if(pattern.length()!=s.length) return false; for(int i=0;i<pattern.length();i++) { for(int j=0;j<i;j++) { if((pattern.charAt(i)!=pa

Codeforces Round #290 (Div. 2) b

/** * @brief Codeforces Round #290 (Div. 2) b * @file a.cpp * @author mianma * @created 2015/02/04 15:17 * @edited 2015/02/04 15:17 * @type brute * @note */ #include <fstream> #include <iostream> #include <string> #include <cstring>

Codeforces Round #290 Div1 A

Problem 给N串字符串Si,通常定义字典序大小关系为 'a'<'b'<'c'<......<'y'<'z',现要求重新定义大小关系使得对于任意 i,j(i<j)满足Si <Sj,输出大小关系(一串'a'-'z'的排列),或者输出不存在(任意大小关系都不能满足要求). Limits Time Limit(ms): 2000 Memory Limit(MB): 256 N: 100 |Si|: 100 Solution 用图论方法解决,发现满足拓扑关系.枚举相邻

Codeforces Round #290 Div1 B

Problem 有一只青蛙在x轴上跳,起初在原点,现有N种跳跃技能可以购买,每技能有两属性:跳跃长度Li 以及 花费Ci.若购买了第 i 种技能,则可以从 y 位置跳跃到 y+Li 或者 y-Li 位置,但需花费Ci 元.求最小花费使得青蛙可以跳到每一个整数点上,若无法做到,输出-1. Limits Time Limit(ms): 2000 Memory Limit(MB): 256 N: 300 Li: [1, 10^9] Ci: [1, 10^5] Solution 若购买了n个属性使得青蛙