@@ -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/a7b5d7e611141d42/14_SINGLENUMBER.INI.ipch | ||||
Alogrithm/.vs/Alogrithm/v16/ipch/AutoPCH/b3ea30d1998dc01e/14_SINGLENUMBER.ipch | Alogrithm/.vs/Alogrithm/v16/ipch/AutoPCH/b3ea30d1998dc01e/14_SINGLENUMBER.ipch | ||||
Alogrithm/Alogrithm/Debug/14_SingleNumber.obj | 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 |
@@ -146,6 +146,7 @@ | |||||
<ClCompile Include="src\12_IsValid.cpp" /> | <ClCompile Include="src\12_IsValid.cpp" /> | ||||
<ClCompile Include="src\13_MyAtoi.cpp" /> | <ClCompile Include="src\13_MyAtoi.cpp" /> | ||||
<ClCompile Include="src\14_SingleNumber.cpp" /> | <ClCompile Include="src\14_SingleNumber.cpp" /> | ||||
<ClCompile Include="src\15_WordPattern.cpp" /> | |||||
<ClCompile Include="src\1_ContainsNearbyDuplicate.cpp" /> | <ClCompile Include="src\1_ContainsNearbyDuplicate.cpp" /> | ||||
<ClCompile Include="src\2_ExcelSheetColumnTitle.cpp" /> | <ClCompile Include="src\2_ExcelSheetColumnTitle.cpp" /> | ||||
<ClCompile Include="src\3_bool IsUgly.cpp" /> | <ClCompile Include="src\3_bool IsUgly.cpp" /> | ||||
@@ -163,6 +164,7 @@ | |||||
<ClInclude Include="include\12_IsValid.h" /> | <ClInclude Include="include\12_IsValid.h" /> | ||||
<ClInclude Include="include\13_MyAtoi.h" /> | <ClInclude Include="include\13_MyAtoi.h" /> | ||||
<ClInclude Include="include\14_SingleNumber.h" /> | <ClInclude Include="include\14_SingleNumber.h" /> | ||||
<ClInclude Include="include\15_WordPattern.h" /> | |||||
<ClInclude Include="include\1_ContainsNearbyDuplicate.h" /> | <ClInclude Include="include\1_ContainsNearbyDuplicate.h" /> | ||||
<ClInclude Include="include\2_ExcelSheetColumnTitle.h" /> | <ClInclude Include="include\2_ExcelSheetColumnTitle.h" /> | ||||
<ClInclude Include="include\3_bool IsUgly.h" /> | <ClInclude Include="include\3_bool IsUgly.h" /> | ||||
@@ -179,6 +181,7 @@ | |||||
<None Include="config\12_IsValid.ini" /> | <None Include="config\12_IsValid.ini" /> | ||||
<None Include="config\13_MyAtoi.ini" /> | <None Include="config\13_MyAtoi.ini" /> | ||||
<None Include="config\14_SingleNumber.ini" /> | <None Include="config\14_SingleNumber.ini" /> | ||||
<None Include="config\15_WordPattern.ini" /> | |||||
<None Include="config\1_ContainsNearbyDuplicate.ini" /> | <None Include="config\1_ContainsNearbyDuplicate.ini" /> | ||||
<None Include="config\2_ExcelSheetColumnTiTle.ini" /> | <None Include="config\2_ExcelSheetColumnTiTle.ini" /> | ||||
<None Include="config\3_bool IsUgly.ini" /> | <None Include="config\3_bool IsUgly.ini" /> | ||||
@@ -69,6 +69,9 @@ | |||||
<ClCompile Include="src\14_SingleNumber.cpp"> | <ClCompile Include="src\14_SingleNumber.cpp"> | ||||
<Filter>源文件\src</Filter> | <Filter>源文件\src</Filter> | ||||
</ClCompile> | </ClCompile> | ||||
<ClCompile Include="src\15_WordPattern.cpp"> | |||||
<Filter>源文件\src</Filter> | |||||
</ClCompile> | |||||
</ItemGroup> | </ItemGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
<ClInclude Include="include\2_ExcelSheetColumnTitle.h"> | <ClInclude Include="include\2_ExcelSheetColumnTitle.h"> | ||||
@@ -113,6 +116,9 @@ | |||||
<ClInclude Include="include\14_SingleNumber.h"> | <ClInclude Include="include\14_SingleNumber.h"> | ||||
<Filter>头文件\include</Filter> | <Filter>头文件\include</Filter> | ||||
</ClInclude> | </ClInclude> | ||||
<ClInclude Include="include\15_WordPattern.h"> | |||||
<Filter>头文件\include</Filter> | |||||
</ClInclude> | |||||
</ItemGroup> | </ItemGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
<None Include="config\3_bool IsUgly.ini"> | <None Include="config\3_bool IsUgly.ini"> | ||||
@@ -157,5 +163,8 @@ | |||||
<None Include="config\14_SingleNumber.ini"> | <None Include="config\14_SingleNumber.ini"> | ||||
<Filter>资源文件\config</Filter> | <Filter>资源文件\config</Filter> | ||||
</None> | </None> | ||||
<None Include="config\15_WordPattern.ini"> | |||||
<Filter>资源文件\config</Filter> | |||||
</None> | |||||
</ItemGroup> | </ItemGroup> | ||||
</Project> | </Project> |
@@ -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 |
@@ -0,0 +1,10 @@ | |||||
#pragma once | |||||
#include <stdlib.h> | |||||
#include <string.h> | |||||
#include <stdio.h> | |||||
typedef struct compose { | |||||
char ch; | |||||
char* str; | |||||
}ComPose; | |||||
bool WordPattern(char* pattern, char* s); |
@@ -0,0 +1,31 @@ | |||||
#include "../include/15_WordPattern.h" | |||||
//题目:给定一种规律pattern和一个字符串str,判断str是否遵循相同的规律。 | |||||
//思路:定义结构体数组,把对应的字符和字符串存起来,然后判断字符相同的元素,对应的字符串是否也相等 | |||||
bool WordPattern(char* pattern, char* s) { | |||||
int patt_len = strlen(pattern);//存放pattern的长度 | |||||
int s_len = 0; //存放s的长度 | |||||
char* token; //切割字符串用,临时存储字符串 | |||||
ComPose* arr = (ComPose*)malloc(sizeof(ComPose) * patt_len);//为结构体数组开辟空间,这里以pattern的长度开辟大小 | |||||
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。 | |||||
} |
@@ -1,7 +1,11 @@ | |||||
#include<stdio.h> | #include<stdio.h> | ||||
#include "../include/4_IsPalindrome.h" | |||||
#include "../include/15_WordPattern.h" | |||||
int main() | int main() | ||||
{ | { | ||||
printf("%d\n",IsPalindrome(-123321)); | |||||
char p[] = "aba"; | |||||
char s[] = "dog cat dog d"; | |||||
printf("%d\n", WordPattern(p, s)); | |||||
return 0; | return 0; | ||||
} | } |
@@ -16,6 +16,7 @@ using namespace Microsoft::VisualStudio::CppUnitTestFramework; | |||||
#define FileName_12 "../Alogrithm/config/12_IsValid.ini" | #define FileName_12 "../Alogrithm/config/12_IsValid.ini" | ||||
#define FileName_13 "../Alogrithm/config/13_MyAtoi.ini" | #define FileName_13 "../Alogrithm/config/13_MyAtoi.ini" | ||||
#define FileName_14 "../Alogrithm/config/14_SingleNumber.ini" | #define FileName_14 "../Alogrithm/config/14_SingleNumber.ini" | ||||
#define FileName_15 "../Alogrithm/config/15_WordPattern.ini" | |||||
namespace UnitTest | 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)); | |||||
} | |||||
} | |||||
}; | |||||
} | } |
@@ -103,7 +103,7 @@ | |||||
<SubSystem>Windows</SubSystem> | <SubSystem>Windows</SubSystem> | ||||
<AdditionalLibraryDirectories>$(VCInstallDir)UnitTest\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> | <AdditionalLibraryDirectories>$(VCInstallDir)UnitTest\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> | ||||
<GenerateDebugInformation>DebugFull</GenerateDebugInformation> | <GenerateDebugInformation>DebugFull</GenerateDebugInformation> | ||||
<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;%(AdditionalDependencies)</AdditionalDependencies> | |||||
<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)</AdditionalDependencies> | |||||
</Link> | </Link> | ||||
</ItemDefinitionGroup> | </ItemDefinitionGroup> | ||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> | <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> | ||||
@@ -27,6 +27,7 @@ | |||||
#include"../Alogrithm/include/12_IsValid.h" | #include"../Alogrithm/include/12_IsValid.h" | ||||
#include"../Alogrithm/include/13_MyAtoi.h" | #include"../Alogrithm/include/13_MyAtoi.h" | ||||
#include"../Alogrithm/include/14_SingleNumber.h" | #include"../Alogrithm/include/14_SingleNumber.h" | ||||
#include"../Alogrithm/include/15_WordPattern.h" | |||||
int CalcCount(int n, char(*str)[10],const char *FileName); | int CalcCount(int n, char(*str)[10],const char *FileName); | ||||