瀏覽代碼

分支15完成

master
linyongji 4 年之前
父節點
當前提交
a3b08d0bc3
共有 11 個檔案被更改,包括 118 行新增3 行删除
  1. +4
    -0
      .gitignore
  2. 二進制
      Alogrithm/.vs/Alogrithm/v16/.suo
  3. +3
    -0
      Alogrithm/Alogrithm/Alogrithm.vcxproj
  4. +9
    -0
      Alogrithm/Alogrithm/Alogrithm.vcxproj.filters
  5. +32
    -0
      Alogrithm/Alogrithm/config/15_WordPattern.ini
  6. +10
    -0
      Alogrithm/Alogrithm/include/15_WordPattern.h
  7. +31
    -0
      Alogrithm/Alogrithm/src/15_WordPattern.cpp
  8. +6
    -2
      Alogrithm/Alogrithm/src/main.cpp
  9. +21
    -0
      Alogrithm/UnitTest/UnitTest.cpp
  10. +1
    -1
      Alogrithm/UnitTest/UnitTest.vcxproj
  11. +1
    -0
      Alogrithm/UnitTest/pch.h

+ 4
- 0
.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

二進制
Alogrithm/.vs/Alogrithm/v16/.suo 查看文件


+ 3
- 0
Alogrithm/Alogrithm/Alogrithm.vcxproj 查看文件

@@ -146,6 +146,7 @@
<ClCompile Include="src\12_IsValid.cpp" />
<ClCompile Include="src\13_MyAtoi.cpp" />
<ClCompile Include="src\14_SingleNumber.cpp" />
<ClCompile Include="src\15_WordPattern.cpp" />
<ClCompile Include="src\1_ContainsNearbyDuplicate.cpp" />
<ClCompile Include="src\2_ExcelSheetColumnTitle.cpp" />
<ClCompile Include="src\3_bool IsUgly.cpp" />
@@ -163,6 +164,7 @@
<ClInclude Include="include\12_IsValid.h" />
<ClInclude Include="include\13_MyAtoi.h" />
<ClInclude Include="include\14_SingleNumber.h" />
<ClInclude Include="include\15_WordPattern.h" />
<ClInclude Include="include\1_ContainsNearbyDuplicate.h" />
<ClInclude Include="include\2_ExcelSheetColumnTitle.h" />
<ClInclude Include="include\3_bool IsUgly.h" />
@@ -179,6 +181,7 @@
<None Include="config\12_IsValid.ini" />
<None Include="config\13_MyAtoi.ini" />
<None Include="config\14_SingleNumber.ini" />
<None Include="config\15_WordPattern.ini" />
<None Include="config\1_ContainsNearbyDuplicate.ini" />
<None Include="config\2_ExcelSheetColumnTiTle.ini" />
<None Include="config\3_bool IsUgly.ini" />


+ 9
- 0
Alogrithm/Alogrithm/Alogrithm.vcxproj.filters 查看文件

@@ -69,6 +69,9 @@
<ClCompile Include="src\14_SingleNumber.cpp">
<Filter>源文件\src</Filter>
</ClCompile>
<ClCompile Include="src\15_WordPattern.cpp">
<Filter>源文件\src</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="include\2_ExcelSheetColumnTitle.h">
@@ -113,6 +116,9 @@
<ClInclude Include="include\14_SingleNumber.h">
<Filter>头文件\include</Filter>
</ClInclude>
<ClInclude Include="include\15_WordPattern.h">
<Filter>头文件\include</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="config\3_bool IsUgly.ini">
@@ -157,5 +163,8 @@
<None Include="config\14_SingleNumber.ini">
<Filter>资源文件\config</Filter>
</None>
<None Include="config\15_WordPattern.ini">
<Filter>资源文件\config</Filter>
</None>
</ItemGroup>
</Project>

+ 32
- 0
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

+ 10
- 0
Alogrithm/Alogrithm/include/15_WordPattern.h 查看文件

@@ -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);

+ 31
- 0
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);//存放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。
}

+ 6
- 2
Alogrithm/Alogrithm/src/main.cpp 查看文件

@@ -1,7 +1,11 @@
#include<stdio.h>
#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;
}

+ 21
- 0
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));
}
}
};
}

+ 1
- 1
Alogrithm/UnitTest/UnitTest.vcxproj 查看文件

@@ -103,7 +103,7 @@
<SubSystem>Windows</SubSystem>
<AdditionalLibraryDirectories>$(VCInstallDir)UnitTest\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<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>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">


+ 1
- 0
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);


Loading…
取消
儲存