diff --git a/.gitignore b/.gitignore index 39c6c06..bb5db3f 100644 --- a/.gitignore +++ b/.gitignore @@ -131,3 +131,6 @@ Alogrithm/.vs/Alogrithm/v16/ipch/AutoPCH/8c1a78e28f38071c/11_CANWINNIM.ipch Alogrithm/.vs/Alogrithm/v16/ipch/AutoPCH/80ee02d8a95bc92a/11_CANWINNIM.ipch .vs/tasks.vs.json Alogrithm/.vs/Alogrithm/v16/ipch/AutoPCH/95ff4e0647685c25/11_CANWINNIM.ipch +Alogrithm/.vs/Alogrithm/v16/ipch/AutoPCH/ec9d75c6b219f9bb/12_ISVALID.ipch +Alogrithm/Alogrithm/Debug/12_IsValid.obj +Alogrithm/UnitTest/Debug/UnitTest.tlog/link.16692.delete.1.tlog diff --git a/Alogrithm/.vs/Alogrithm/v16/.suo b/Alogrithm/.vs/Alogrithm/v16/.suo index 377fb96..37400b8 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 ca35415..835e13c 100644 --- a/Alogrithm/Alogrithm/Alogrithm.vcxproj +++ b/Alogrithm/Alogrithm/Alogrithm.vcxproj @@ -142,6 +142,7 @@ + @@ -156,6 +157,7 @@ + @@ -169,6 +171,7 @@ + diff --git a/Alogrithm/Alogrithm/Alogrithm.vcxproj.filters b/Alogrithm/Alogrithm/Alogrithm.vcxproj.filters index 072a8a5..872f03a 100644 --- a/Alogrithm/Alogrithm/Alogrithm.vcxproj.filters +++ b/Alogrithm/Alogrithm/Alogrithm.vcxproj.filters @@ -60,6 +60,9 @@ 源文件\src + + 源文件\src + @@ -95,6 +98,9 @@ 头文件\include + + 头文件\include + @@ -130,5 +136,8 @@ 资源文件\config + + 资源文件\config + \ No newline at end of file diff --git a/Alogrithm/Alogrithm/config/12_IsValid.ini b/Alogrithm/Alogrithm/config/12_IsValid.ini new file mode 100644 index 0000000..c69b4f8 --- /dev/null +++ b/Alogrithm/Alogrithm/config/12_IsValid.ini @@ -0,0 +1,21 @@ +[Test1] +input=() +output=1 +[Test2] +input={} +output=1 +[Test3] +input={] +output=0 +[Test4] +input=}}(){] +output=0 +[Test5] +input=([]} +output=0 +[Test6] +input=(])}}}{}{}{} +output=0 +[Test7] +input={{{([()])}}}{} +output=1 \ No newline at end of file diff --git a/Alogrithm/Alogrithm/include/12_IsValid.h b/Alogrithm/Alogrithm/include/12_IsValid.h new file mode 100644 index 0000000..e34430b --- /dev/null +++ b/Alogrithm/Alogrithm/include/12_IsValid.h @@ -0,0 +1,6 @@ +#pragma once + +#include +#include + +bool IsValid(char* s); \ No newline at end of file diff --git a/Alogrithm/Alogrithm/src/12_IsValid.cpp b/Alogrithm/Alogrithm/src/12_IsValid.cpp new file mode 100644 index 0000000..8782f62 --- /dev/null +++ b/Alogrithm/Alogrithm/src/12_IsValid.cpp @@ -0,0 +1,29 @@ +#include "../include/12_IsValid.h" +#pragma warning(disable:6385) +#pragma warning(disable:6386) +//˼·Žջźνƥ䡣 +bool IsValid(char* s) { + int s_len = strlen(s);//һintַ + char* stack = (char*)malloc(sizeof(char) * (s_len + 2));//һchar*ָģһջ + int top = 0;//һstack + if (s_len % 2 != 0) {//ַΪĻ϶ƥ䣬ֱӷfalse + return false; + } + for (int i = 0; i < s_len; i++) {//ѭַַջ + if ((s[i] == '(') || (s[i] == '{') || (s[i] == '[')) {//ţջ + top++;//top + stack[top] = s[i];//ջ + }//ţǰһȽϣͬ˵ƥ䣬topǰƣ + else if ((s[i] == ')' && stack[top] == '(') || (s[i] == '}' && stack[top] == '{') || (s[i] == ']' && stack[top] == '[')) { + top--; + } + else {//ǰķŲƥ䣬Ҳfalse + return false; + } + }//ԺжtopDzƵʼλã + if (top == 0) {//򷵻true + return true; + } + return false;//򷵻false + free(stack); +} \ No newline at end of file diff --git a/Alogrithm/Alogrithm/src/main.cpp b/Alogrithm/Alogrithm/src/main.cpp index d70141a..89788bc 100644 --- a/Alogrithm/Alogrithm/src/main.cpp +++ b/Alogrithm/Alogrithm/src/main.cpp @@ -1,7 +1,7 @@ #include -#include "../include/11_CanWinNim.h" + int main() { - printf("%d\n",CanWinNim(6)); + return 0; } diff --git a/Alogrithm/UnitTest/UnitTest.cpp b/Alogrithm/UnitTest/UnitTest.cpp index ace0045..e89e3d4 100644 --- a/Alogrithm/UnitTest/UnitTest.cpp +++ b/Alogrithm/UnitTest/UnitTest.cpp @@ -13,6 +13,7 @@ using namespace Microsoft::VisualStudio::CppUnitTestFramework; #define FileName_9 "../Alogrithm/config/9_AddBinary.ini" #define FileName_10 "../Alogrithm/config/10_BinaryTreePaths.ini" #define FileName_11 "../Alogrithm/config/11_CanWinNim.ini" +#define FileName_12 "../Alogrithm/config/12_IsValid.ini" namespace UnitTest @@ -218,4 +219,21 @@ namespace UnitTest } } }; + TEST_CLASS(UnitTest_12) + { + TEST_METHOD(TestMethode1) + { + char Section_Name[100][10] = { 0 }; + int Section_Count = CalcCount(100, Section_Name, FileName_12); + char input_char[1024] = { 0 }; + CString input,output; + for (int i = 0; i < Section_Count; i++) { + GetPrivateProfileString(Section_Name[i], "input", " ", input.GetBuffer(200), 200, FileName_12); + GetPrivateProfileString(Section_Name[i], "output", " ", output.GetBuffer(20), 20, FileName_12); + strcpy(input_char, input); + bool nReal = IsValid(input_char); + Assert::AreEqual(nReal, CstrToBool(output)); + } + } + }; } diff --git a/Alogrithm/UnitTest/UnitTest.vcxproj b/Alogrithm/UnitTest/UnitTest.vcxproj index 16ac8ec..353548a 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;%(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;%(AdditionalDependencies) diff --git a/Alogrithm/UnitTest/pch.h b/Alogrithm/UnitTest/pch.h index 5c196b5..dbcae6d 100644 --- a/Alogrithm/UnitTest/pch.h +++ b/Alogrithm/UnitTest/pch.h @@ -24,6 +24,7 @@ #include"../Alogrithm/include/9_AddBinary.h" #include"../Alogrithm/include/10_BinaryTreePaths.h" #include"../Alogrithm/include/11_CanWinNim.h" +#include"../Alogrithm/include/12_IsValid.h" int CalcCount(int n, char(*str)[10],const char *FileName);