diff --git a/.gitignore b/.gitignore index ca8cd71..9d51f36 100644 --- a/.gitignore +++ b/.gitignore @@ -170,3 +170,11 @@ Alogrithm/.vs/Alogrithm/v16/ipch/AutoPCH/85aeac5e7d03af9f/20_MOVEZEROES.ipch Alogrithm/.vs/Alogrithm/v16/ipch/AutoPCH/b02cd44cfc574591/20_MOVEZEROES.ipch Alogrithm/Alogrithm/Debug/20_MoveZeroes.obj Alogrithm/UnitTest/Debug/UnitTest.tlog/link.7728.delete.1.tlog +Alogrithm/.vs/Alogrithm/v16/ipch/AutoPCH/38968d1650bcc194/21_REVERSE.ipch +Alogrithm/.vs/Alogrithm/v16/ipch/AutoPCH/8f9978f090d76ea5/21_REVERSE.ipch +Alogrithm/.vs/Alogrithm/v16/TestStore/0/006.testlog +Alogrithm/Alogrithm/Debug/21_Reverse.obj +Alogrithm/TestResults/3a4f3224-7b61-4f96-9f94-502bfe5fd902/林_MI-1 2021-01-26 13_42_25.coverage +Alogrithm/TestResults/8c6c8585-34aa-48ac-85e3-14d7928dfa16/林_MI-1 2021-01-26 13_40_06.coverage +Alogrithm/TestResults/a754108b-7c18-474b-b14f-0bda44b6f79f/林_MI-1 2021-01-26 13_35_01.coverage +Alogrithm/UnitTest/Debug/UnitTest.tlog/link.1416.delete.1.tlog diff --git a/Alogrithm/.vs/Alogrithm/v16/.suo b/Alogrithm/.vs/Alogrithm/v16/.suo index f4551ac..2ef4303 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 56ea826..e874e1f 100644 --- a/Alogrithm/Alogrithm/Alogrithm.vcxproj +++ b/Alogrithm/Alogrithm/Alogrithm.vcxproj @@ -152,6 +152,7 @@ + @@ -174,6 +175,7 @@ + @@ -195,6 +197,7 @@ + diff --git a/Alogrithm/Alogrithm/Alogrithm.vcxproj.filters b/Alogrithm/Alogrithm/Alogrithm.vcxproj.filters index 62abcdf..ff3e4de 100644 --- a/Alogrithm/Alogrithm/Alogrithm.vcxproj.filters +++ b/Alogrithm/Alogrithm/Alogrithm.vcxproj.filters @@ -84,6 +84,9 @@ 源文件\src + + 源文件\src + @@ -143,6 +146,9 @@ 头文件\include + + 头文件\include + @@ -202,5 +208,8 @@ 资源文件\config + + 资源文件\config + \ No newline at end of file diff --git a/Alogrithm/Alogrithm/config/21_Reverse.ini b/Alogrithm/Alogrithm/config/21_Reverse.ini new file mode 100644 index 0000000..01e0c8c --- /dev/null +++ b/Alogrithm/Alogrithm/config/21_Reverse.ini @@ -0,0 +1,24 @@ +[Test1] +Input=123 +Output=321 +[Test2] +Input=-123 +Output=-321 +[Test3] +Input=2147483647 +Output=0 +[Test4] +Input=-2147483648 +Output=0 +[Test5] +Input=2147483641 +Output=1463847412 +[Test6] +Input=1663847412 +Output=0 +[Test7] +Input=1000123 +Output=3210001 +[Test8] +Input=-846384741 +Output=-147483648 \ No newline at end of file diff --git a/Alogrithm/Alogrithm/include/21_Reverse.h b/Alogrithm/Alogrithm/include/21_Reverse.h new file mode 100644 index 0000000..a4b2372 --- /dev/null +++ b/Alogrithm/Alogrithm/include/21_Reverse.h @@ -0,0 +1,3 @@ +#pragma once +#include +int Reverse(int x); \ No newline at end of file diff --git a/Alogrithm/Alogrithm/src/21_Reverse.cpp b/Alogrithm/Alogrithm/src/21_Reverse.cpp new file mode 100644 index 0000000..7153008 --- /dev/null +++ b/Alogrithm/Alogrithm/src/21_Reverse.cpp @@ -0,0 +1,20 @@ +#include "../include/21_Reverse.h" +//Ŀһ32λзҪÿλϵֽзת +//˼·δӸλʼȡȡ10ۼӣҪĽ +// ⣺ÿһ֮ǰǷ +// sum214748367/10,sum 2147483647/10 && ȡĸλpop7 +// sumС-214748368/10,sum -2147483648/10 && ȡĸλpopС-8 +int Reverse(int x) { + int sum = 0; //ŷֵ + int pop = 0; //θλ + while (x != 0) { //ѭ10ֱΪֹ + pop = x % 10; //ȡλ + x = x / 10; //γ10Ϊȡһ׼ + if ((sum > INT_MAX / 10) || (sum == INT_MAX/10 && pop > 7)) //ж + return 0; + if ((sum < INT_MIN / 10) || (sum == INT_MIN/10 && pop < -8)) //ж + return 0; + sum = sum * 10 + pop; //ѵõĸλ*10ӣõľҪص + } + return sum; +} \ No newline at end of file diff --git a/Alogrithm/Alogrithm/src/main.cpp b/Alogrithm/Alogrithm/src/main.cpp index 95bb9b6..5b673de 100644 --- a/Alogrithm/Alogrithm/src/main.cpp +++ b/Alogrithm/Alogrithm/src/main.cpp @@ -1,13 +1,11 @@ #include -#include "../include/20_MoveZeroes.h" +#include "../include/21_Reverse.h" int main() { - int arr[6] = { 1,2,0,1,0}; - MoveZeroes(arr, 5); - for (int i = 0; i < 5; i++) { - printf("%d ", arr[i]); - } + + printf("%d ",Reverse(214748364)); + } diff --git a/Alogrithm/UnitTest/UnitTest.cpp b/Alogrithm/UnitTest/UnitTest.cpp index 404f4fc..f3ee58f 100644 --- a/Alogrithm/UnitTest/UnitTest.cpp +++ b/Alogrithm/UnitTest/UnitTest.cpp @@ -21,6 +21,7 @@ using namespace Microsoft::VisualStudio::CppUnitTestFramework; #define FileName_18 "../Alogrithm/config/18_PlusOne.ini" #define FileName_19 "../Alogrithm/config/19_MySqrt.ini" #define FileName_20 "../Alogrithm/config/20_MoveZeroes.ini" +#define FileName_21 "../Alogrithm/config/21_Reverse.ini" namespace UnitTest { @@ -371,4 +372,19 @@ namespace UnitTest } } }; + TEST_CLASS(UnitTest_21) + { + TEST_METHOD(TestMethode1) + { + char Section_Name[100][10] = { 0 }; + int Section_Count = CalcCount(100, Section_Name, FileName_21); + CString input, output; + for (int i = 0; i < Section_Count; i++) { + GetPrivateProfileString(Section_Name[i], "Input", " ", input.GetBuffer(100), 100, FileName_21); + GetPrivateProfileString(Section_Name[i], "Output", " ", output.GetBuffer(100), 100, FileName_21); + int nReal = Reverse(_ttoi(input)); + Assert::AreEqual(nReal, _ttoi(output)); + } + } + }; } diff --git a/Alogrithm/UnitTest/UnitTest.vcxproj b/Alogrithm/UnitTest/UnitTest.vcxproj index c51fda8..9b3db92 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;../Alogrithm/Debug/15_WordPattern.obj;../Alogrithm/Debug/16_ReverseBits.obj;../Alogrithm/Debug/18_PlusOne.obj;../Alogrithm/Debug/19_MySqrt.obj;../Alogrithm/Debug/20_MoveZeroes.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;../Alogrithm/Debug/16_ReverseBits.obj;../Alogrithm/Debug/18_PlusOne.obj;../Alogrithm/Debug/19_MySqrt.obj;../Alogrithm/Debug/20_MoveZeroes.obj;../Alogrithm/Debug/21_Reverse.obj;%(AdditionalDependencies) diff --git a/Alogrithm/UnitTest/pch.h b/Alogrithm/UnitTest/pch.h index d2337f2..160e994 100644 --- a/Alogrithm/UnitTest/pch.h +++ b/Alogrithm/UnitTest/pch.h @@ -32,6 +32,7 @@ #include"../Alogrithm/include/18_PlusOne.h" #include"../Alogrithm/include/19_MySqrt.h" #include"../Alogrithm/include/20_MoveZeroes.h" +#include"../Alogrithm/include/21_Reverse.h" int CalcCount(int n, char(*str)[10],const char *FileName);