You are given a pattern, such as "abab". You are also given a string, example "redblueredblue". You need to write a program that tells whether the string follows the given pattern or not.
Examples:
1) Pattern : “abba”, input: “redbluebluered” should return 1.
2) Pattern: “aaaa”, input: “asdasdasdasd” should return 1.
3) Pattern: “aabb”, input: “xyzabcxzyabc” should return 0.
bool isSamePatternHelper(string& pattern, int pIndex, string& input, int iIndex, unordered_map<char, string>& hash, unordered_map<string, char>& hashString) { if (pIndex == pattern.size() && iIndex == input.size()) { return true; } if (pIndex == pattern.size() || iIndex == input.size()) { return false; } char c = pattern[pIndex]; if (hash.find(c) != hash.end()) { string toMatch = hash[c]; for (int i = 0; i < toMatch.size(); i++) { if (iIndex >= input.size() || input[iIndex] != toMatch[i]) { return false; } iIndex++; } if (hashString.find(toMatch) == hashString.end() || c != hashString[toMatch]) { return false; } return isSamePatternHelper(pattern, pIndex + 1, input, iIndex, hash, hashString); } else { // try all possible bool flag = false; for (int i = iIndex; i < input.size(); i++) { string toMatch = input.substr(iIndex, i - iIndex + 1); hash[c] = toMatch; hashString[toMatch] = c; flag |= isSamePatternHelper(pattern, pIndex + 1, input, i + 1, hash, hashString); hash.erase(c); hashString.erase(toMatch); if (flag) { return true; } } return false; } } bool isSamePattern(string& pattern, string& input) { int patternSize = pattern.size(); int inputSize = input.size(); if (inputSize < patternSize) return false; unordered_map<char, string> hash; unordered_map<string, char> hashString; return isSamePatternHelper(pattern, 0, input, 0, hash, hashString); } int main(){ string pattern = "abab"; string input = "catdogcatdog"; bool ret = isSamePattern(pattern, input); cout << ret << endl; return 0; }
相关推荐
Dropbox Core SDK for Java 6 ... dropbox-core-sdk 3.0.11 If you are using Gradle, then edit your project's "build.gradle" and add this to the dependencies section: dependencies { //
**dropbox-sdk-java** 是一个专门为Java开发者设计的开源库,它使得与Dropbox的核心API进行交互变得简单而直观。这个库提供了全面的功能,包括文件上传、下载、管理,以及目录操作,同步,权限控制等,使开发人员...
本文将深入探讨"dropbox-android-sdk-1.6.3"这个版本,帮助开发者理解和运用这一强大的云存储解决方案。 首先,我们要明确的是,"dropbox-android-sdk-1.6.3"是Dropbox针对Android平台提供的一个软件开发工具包...
dropbox 2011-12-13最新Windows客户端,安装即可使用
`laravel-dropbox-driver`是将这两者结合的工具,使开发者能够利用Dropbox的服务来存储应用程序的数据。 首先,我们需要了解Laravel的文件存储系统。Laravel提供了多种存储驱动,包括本地、FTP、S3等,而`laravel-...
本篇文章将详细解析一个名为“dropbox-mysql-backup-源码”的项目,它是一个利用Dropbox作为存储媒介的MySQL数据库备份解决方案。通过理解并应用这个源码,我们可以实现自动化、可靠的MySQL数据库备份,并将其安全地...
《深入理解Dropbox-datastores-js:JavaScript SDK的克隆与应用》 在现代Web开发中,数据存储和同步是至关重要的环节。Dropbox-datastores-js是Dropbox为开发者提供的一款JavaScript SDK,它允许用户在Dropbox云...
该压缩包文件“IOS应用源码Demo-录音笔记for ipad(录完上传到dropbox)-毕设学习.zip”提供了一个iOS应用的源代码示例,特别适合那些正在进行毕业设计或者想深入理解iOS应用程序开发的学生。这个应用的核心功能是...
在PyPI上,我们可以找到各种功能强大的Python库,其中就包括了我们今天要讨论的"dropbox-5.2-py3-none-any.whl"。 "dropbox-5.2-py3-none-any.whl"是Dropbox官方发布的Python库的二进制版本,用于与Dropbox云存储...
在压缩包文件"laravel-dropbox-storage-driver-master"中,可能包含了该驱动的源代码,包括安装指南、示例用法以及可能的自定义配置选项。开发者可以通过研究这些代码来更深入地理解如何在自己的Laravel项目中集成并...
可以在上文档安装通过创建应用通过安装$ npm install --save dropbox从源安装: $ git clone https://github.com/dropbox/dropbox-sdk-js.git$ cd dropbox-sdk-js$ npm install安装后,请遵循我们的或阅读。...
leetcode题库Dropbox 现场面试 Dropbox 现场面试指南! Dropbox 面试题库非常小。 银行在中文论坛上已经有很多年了,我们希望让每个人都可以访问它,以便每个人都有平等的机会准备Dropbox现场面试! 备份链接: 行为...
首先,我们关注的核心文件是"dropbox-5.2.1-py3-none-any.whl",这是一个Python的 wheel 包格式,它是预编译的Python库,用于简化安装过程。Wheel包是Python社区为了提高分发和安装效率而推出的一种二进制格式,它...
资源来自pypi官网。 资源全名:dropbox-5.2.1-py3-none-any.whl
dropbox-sdk-go-unofficial, Go的非官方 Dropbox SDK 面向 [UNOFFICIAL] 的 Dropbox 用于与Dropbox集成的非官方 go 。 使用 go 1.5 测试这菊花什么意思这里没有正式的Dropbox支持Bug 可能也可能无法修复并非所有的...
Dropbox现场采访 Dropbox现场采访指南! Dropbox面试问题库很小。 该银行已经在中国论坛上存在很多年了,我们希望所有人都能使用它,以便每个人都有平等的机会准备Dropbox现场采访! 备用链接: : : 行为问题:...
dropbox-api put /tmp/foo.txt dropbox:/Public/ 运行dropbox-api help以获取更多选项。 描述 dropbox-api是访问Dropbox API的命令行界面。 ls 找 杜 同步 cp MV R M 麦克迪尔 得到 放 安装与设定 1.安装 1-a)...
用于在iOS或macOS上与Dropbox 集成的官方Dropbox Objective-C SDK。 完整的文档。 注意:请不要在生产中依靠master 。 请改用我们标记的(最好通过CocoaPods或Carthage获取),因为这些提交已经过更彻底的测试。 ...