diff --git a/.gitignore b/.gitignore
index 40ca5f4..4c676a0 100644
--- a/.gitignore
+++ b/.gitignore
@@ -145,3 +145,7 @@ Alogrithm/.vs/Alogrithm/v16/TestStore/0/001.testlog
Alogrithm/.vs/Alogrithm/v16/ipch/AutoPCH/a7b5d7e611141d42/14_SINGLENUMBER.INI.ipch
Alogrithm/.vs/Alogrithm/v16/ipch/AutoPCH/b3ea30d1998dc01e/14_SINGLENUMBER.ipch
Alogrithm/Alogrithm/Debug/14_SingleNumber.obj
+Alogrithm/.vs/Alogrithm/v16/ipch/AutoPCH/9876e434a61c44b6/15_WORDPATTERN.ipch
+Alogrithm/.vs/Alogrithm/v16/TestStore/0/002.testlog
+Alogrithm/Alogrithm/Debug/15_WordPattern.obj
+Alogrithm/TestResults/c48be650-9a69-4bb0-8f14-5679ff4c12c3/林_MI-1 2021-01-21 11_21_13.coverage
diff --git a/Alogrithm/.vs/Alogrithm/v16/.suo b/Alogrithm/.vs/Alogrithm/v16/.suo
index acef311..fb10a07 100644
Binary files a/Alogrithm/.vs/Alogrithm/v16/.suo and b/Alogrithm/.vs/Alogrithm/v16/.suo differ
diff --git a/Alogrithm/Alogrithm/Alogrithm.vcxproj b/Alogrithm/Alogrithm/Alogrithm.vcxproj
index 6504277..4a3ce66 100644
--- a/Alogrithm/Alogrithm/Alogrithm.vcxproj
+++ b/Alogrithm/Alogrithm/Alogrithm.vcxproj
@@ -146,6 +146,7 @@
+
@@ -163,6 +164,7 @@
+
@@ -179,6 +181,7 @@
+
diff --git a/Alogrithm/Alogrithm/Alogrithm.vcxproj.filters b/Alogrithm/Alogrithm/Alogrithm.vcxproj.filters
index c4cc541..72060dc 100644
--- a/Alogrithm/Alogrithm/Alogrithm.vcxproj.filters
+++ b/Alogrithm/Alogrithm/Alogrithm.vcxproj.filters
@@ -69,6 +69,9 @@
源文件\src
+
+ 源文件\src
+
@@ -113,6 +116,9 @@
头文件\include
+
+ 头文件\include
+
@@ -157,5 +163,8 @@
资源文件\config
+
+ 资源文件\config
+
\ No newline at end of file
diff --git a/Alogrithm/Alogrithm/config/15_WordPattern.ini b/Alogrithm/Alogrithm/config/15_WordPattern.ini
index e69de29..f35eb50 100644
--- a/Alogrithm/Alogrithm/config/15_WordPattern.ini
+++ b/Alogrithm/Alogrithm/config/15_WordPattern.ini
@@ -0,0 +1,32 @@
+[Test1]
+Pattern=abba
+Str=dog cat cat fish
+Output=0
+[Test2]
+Pattern=abab
+Str=dog cat dog cat
+Output=1
+[Test3]
+Pattern=aba
+Str=dog cat dog cat dog
+Output=0
+[Test4]
+Pattern=ababab
+Str=dog cat
+Output=0
+[Test5]
+Pattern=abcc
+Str=dog cat fish fish
+Output=1
+[Test6]
+Pattern=abcc
+Str=dog cat m m
+Output=1
+[Test7]
+Pattern=abcc
+Str=dog cat dog dog
+Output=0
+[Test8]
+Pattern=abbb
+Str=cat dog dog dog
+Output=1
\ No newline at end of file
diff --git a/Alogrithm/Alogrithm/include/15_WordPattern.h b/Alogrithm/Alogrithm/include/15_WordPattern.h
index e69de29..fa69d12 100644
--- a/Alogrithm/Alogrithm/include/15_WordPattern.h
+++ b/Alogrithm/Alogrithm/include/15_WordPattern.h
@@ -0,0 +1,10 @@
+#pragma once
+#include
+#include
+#include
+typedef struct compose {
+ char ch;
+ char* str;
+}ComPose;
+
+bool WordPattern(char* pattern, char* s);
\ No newline at end of file
diff --git a/Alogrithm/Alogrithm/src/15_WordPattern.cpp b/Alogrithm/Alogrithm/src/15_WordPattern.cpp
index e69de29..f915750 100644
--- a/Alogrithm/Alogrithm/src/15_WordPattern.cpp
+++ b/Alogrithm/Alogrithm/src/15_WordPattern.cpp
@@ -0,0 +1,31 @@
+#include "../include/15_WordPattern.h"
+
+//ĿһֹpatternһַstrжstrǷѭͬĹɡ
+//˼·ṹ飬ѶӦַַȻжַͬԪأӦַǷҲ
+bool WordPattern(char* pattern, char* s) {
+ int patt_len = strlen(pattern);//patternij
+ int s_len = 0; //sij
+ char* token; //иַãʱ洢ַ
+ ComPose* arr = (ComPose*)malloc(sizeof(ComPose) * patt_len);//Ϊṹ鿪ٿռ䣬patternijȿٴС
+ token = strtok(s, " "); //Կոиַsѵһַŵstrtok
+ while (token != NULL) { //иֱַsΪNULL
+ if (s_len == patt_len) //sַpatternַfalse
+ return false;
+ arr[s_len].ch = pattern[s_len];//patternеַŵṹеchar ch
+ arr[s_len].str = (char*)malloc(sizeof(char) * strlen(token));//Ϊṹе char *strٿռ
+ strcpy(arr[s_len].str, token); //Ѳֵַṹеchar *str
+ token = strtok(NULL, " "); //
+ s_len++; //ͳַӴĸ
+ }
+ if (s_len != patt_len) //sַСpatternַfalse
+ return false;
+ for (int i = 0; i < s_len; i++) { //ҽṹchȵԪ
+ for (int j = 1; j < s_len ; j++) {
+ if ((arr[i].ch - arr[j].ch == 0) && (strcmp(arr[i].str, arr[j].str) != 0))//chӦȵԪأstrȣfalse
+ return false;
+ else if ((arr[i].ch - arr[j].ch != 0) && (strcmp(arr[i].str, arr[j].str) == 0))//chȵԪأstrȣfalse
+ return false;
+ }
+ }
+return true; //㣬false
+}
\ No newline at end of file
diff --git a/Alogrithm/Alogrithm/src/main.cpp b/Alogrithm/Alogrithm/src/main.cpp
index b1b8c8a..de01dd6 100644
--- a/Alogrithm/Alogrithm/src/main.cpp
+++ b/Alogrithm/Alogrithm/src/main.cpp
@@ -1,7 +1,11 @@
#include
-#include "../include/4_IsPalindrome.h"
+#include "../include/15_WordPattern.h"
+
+
int main()
{
- printf("%d\n",IsPalindrome(-123321));
+ char p[] = "aba";
+ char s[] = "dog cat dog d";
+ printf("%d\n", WordPattern(p, s));
return 0;
}
diff --git a/Alogrithm/UnitTest/UnitTest.cpp b/Alogrithm/UnitTest/UnitTest.cpp
index 5c299b5..75f4c48 100644
--- a/Alogrithm/UnitTest/UnitTest.cpp
+++ b/Alogrithm/UnitTest/UnitTest.cpp
@@ -16,6 +16,7 @@ using namespace Microsoft::VisualStudio::CppUnitTestFramework;
#define FileName_12 "../Alogrithm/config/12_IsValid.ini"
#define FileName_13 "../Alogrithm/config/13_MyAtoi.ini"
#define FileName_14 "../Alogrithm/config/14_SingleNumber.ini"
+#define FileName_15 "../Alogrithm/config/15_WordPattern.ini"
namespace UnitTest
@@ -273,4 +274,24 @@ namespace UnitTest
}
}
};
+ TEST_CLASS(UnitTest_15)
+ {
+ TEST_METHOD(TestMethode1)
+ {
+ char Section_Name[100][10] = { 0 };
+ int Section_Count = CalcCount(100, Section_Name, FileName_15);
+ char Pattern_char[1024] = { 0 };
+ char Str_char[1024] = { 0 };
+ CString Pattern, Str, Output;
+ for (int i = 0; i < Section_Count; i++) {
+ GetPrivateProfileString(Section_Name[i], "Pattern", " ", Pattern.GetBuffer(200), 200, FileName_15);
+ GetPrivateProfileString(Section_Name[i], "Str", " ", Str.GetBuffer(400), 400, FileName_15);
+ GetPrivateProfileString(Section_Name[i], "Output", " ", Output.GetBuffer(20), 20, FileName_15);
+ strcpy(Pattern_char, Pattern);
+ strcpy(Str_char, Str);
+ bool nReal = WordPattern(Pattern_char, Str_char);
+ Assert::AreEqual(nReal, CstrToBool(Output));
+ }
+ }
+ };
}
diff --git a/Alogrithm/UnitTest/UnitTest.vcxproj b/Alogrithm/UnitTest/UnitTest.vcxproj
index c7c09e1..a837996 100644
--- a/Alogrithm/UnitTest/UnitTest.vcxproj
+++ b/Alogrithm/UnitTest/UnitTest.vcxproj
@@ -103,7 +103,7 @@
Windows
$(VCInstallDir)UnitTest\lib;%(AdditionalLibraryDirectories)
DebugFull
- ../Alogrithm/Debug/1_ContainsNearbyDuplicate.obj;../Alogrithm/Debug/2_ExcelSheetColumnTitle.obj;../Alogrithm/Debug/3_bool IsUgly.obj;../Alogrithm/Debug/4_IsPalindrome.obj;../Alogrithm/Debug/5_MinDepth.obj;../Alogrithm/Debug/6_ContainsDuplicate.obj;../Alogrithm/Debug/7_MaxDepth.obj;../Alogrithm/Debug/8_HammingWeight.obj;../Alogrithm/Debug/9_AddBinary.obj;../Alogrithm/Debug/10_BinaryTreePaths.obj;../Alogrithm/Debug/11_CanWinNim.obj;../Alogrithm/Debug/12_IsValid.obj;../Alogrithm/Debug/13_MyAtoi.obj;../Alogrithm/Debug/14_SingleNumber.obj;%(AdditionalDependencies)
+ ../Alogrithm/Debug/1_ContainsNearbyDuplicate.obj;../Alogrithm/Debug/2_ExcelSheetColumnTitle.obj;../Alogrithm/Debug/3_bool IsUgly.obj;../Alogrithm/Debug/4_IsPalindrome.obj;../Alogrithm/Debug/5_MinDepth.obj;../Alogrithm/Debug/6_ContainsDuplicate.obj;../Alogrithm/Debug/7_MaxDepth.obj;../Alogrithm/Debug/8_HammingWeight.obj;../Alogrithm/Debug/9_AddBinary.obj;../Alogrithm/Debug/10_BinaryTreePaths.obj;../Alogrithm/Debug/11_CanWinNim.obj;../Alogrithm/Debug/12_IsValid.obj;../Alogrithm/Debug/13_MyAtoi.obj;../Alogrithm/Debug/14_SingleNumber.obj;../Alogrithm/Debug/15_WordPattern.obj;%(AdditionalDependencies)
diff --git a/Alogrithm/UnitTest/pch.h b/Alogrithm/UnitTest/pch.h
index 9c4a61e..1ff181a 100644
--- a/Alogrithm/UnitTest/pch.h
+++ b/Alogrithm/UnitTest/pch.h
@@ -27,6 +27,7 @@
#include"../Alogrithm/include/12_IsValid.h"
#include"../Alogrithm/include/13_MyAtoi.h"
#include"../Alogrithm/include/14_SingleNumber.h"
+#include"../Alogrithm/include/15_WordPattern.h"
int CalcCount(int n, char(*str)[10],const char *FileName);