From 9cfe1928f723f23b1da40d95b2348b155635d755 Mon Sep 17 00:00:00 2001 From: linyongji Date: Fri, 29 Jan 2021 17:53:00 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=86=E6=94=AF23=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + Alogrithm/.vs/Alogrithm/v16/.suo | Bin 118784 -> 119296 bytes Alogrithm/Alogrithm/Alogrithm.vcxproj | 3 + Alogrithm/Alogrithm/Alogrithm.vcxproj.filters | 9 +++ .../config/23_RestoreIpAddresses.ini | 30 ++++++++++ .../Alogrithm/include/23_RestoreIpAddresses.h | 5 ++ .../Alogrithm/src/23_RestoreIpAddresses.cpp | 53 ++++++++++++++++++ Alogrithm/Alogrithm/src/main.cpp | 10 +++- Alogrithm/UnitTest/UnitTest.cpp | 27 +++++++++ Alogrithm/UnitTest/UnitTest.vcxproj | 2 +- Alogrithm/UnitTest/pch.cpp | 6 +- Alogrithm/UnitTest/pch.h | 1 + 12 files changed, 140 insertions(+), 7 deletions(-) create mode 100644 Alogrithm/Alogrithm/config/23_RestoreIpAddresses.ini create mode 100644 Alogrithm/Alogrithm/include/23_RestoreIpAddresses.h create mode 100644 Alogrithm/Alogrithm/src/23_RestoreIpAddresses.cpp diff --git a/.gitignore b/.gitignore index d96f1cc..c8967e2 100644 --- a/.gitignore +++ b/.gitignore @@ -187,3 +187,4 @@ Alogrithm/UnitTest/Debug/UnitTest.tlog/link.15328.delete.1.tlog *.obj *.testlog *.coverage +*.ipch diff --git a/Alogrithm/.vs/Alogrithm/v16/.suo b/Alogrithm/.vs/Alogrithm/v16/.suo index 3c632092658b9a31191740b71bd8013ceb03936a..0f4c65537abd7d3312fb944fbf032e1f63dba664 100644 GIT binary patch delta 13152 zcmeHN3tUuX+CR@Y$Z!!s0TE3H9F-JshP$XRgCmLJ1w_-9LJ}0rWQ5TGQ3fN;!rQ#+ z>-L$sRQ_zsQf8CZEb-EI(JkEU+uB^$tZjGATI?FqPsy{1s&&svbZ~Yild__5yMaWDQbz*@o_o)&1>1 zDNig{RnzC{dc1%d$q zyZ{6MJjo1{K0pjG9hd@W0W-jy7><&;_;Zv@|FFB{dXl>yiZU0-oZM+}fx8~=E(=f= z0>$n&PcRqtr9crdq*MROEm^TtyCti?UA4qZyXUDMN}Q+UqqF3B4J>(;-2XL zHWE(+{YKyhiSy*0CC=?WAnZ=!Jl-bpyFu5L#CxN^P2#LUoh8mf>r&$LG0>gFS$ZsS zzBo&q%W>|qv&6ZdkGAKBB|HyciQnm_cM?p-|6SLe-34&bK% z%jQ2&?sV6=eG+w1wI=I>Zjf9w^5$q zy2$eBpUh0OJ9}Ro@CZc0&Ca; zikT%5!kRQg99J2{m82XsTP#=S*jiOKIj;YG3TfE>vORSTT&uHBKA~YQ^P}$UyD~XP z9oE*cX3SJ)aYMT*NR*g8#C*Sg;>uOMLl=6M>@8+-!cQ-(Ei=W5kT_L{hqxZnLdoLV z+$f3>VXA?mDNwC>2as`b=CMJVVWX<}1`Y z&@oO_+%i?1xO=?3ASl=oJnEuH!@?`%^Co6eV;qNQ-8M*UZ0?{@37Jov3$o24OOl|k*jJYPA zF{#v|{!?9}u7C!Uu$?rD_rtv9fhvko8xr$ww`+}dV}xtQNMpI?H@NPLfOy9EXEk$7 z>@aE7+qvhk$y`4~CEgC}C+@k+OAfNoaR0e)u`7VfKlaoqgLZ9@46u@3elVEg51>4Myt*u3n*GHXd`Va8rzT3O){tK=!!GRsb>j+E)gJdA}( znPOE+lu|g|48;OBQh*<~%JAd=Xc%k@e&&~ZOEt%iA?cjiBT;QA#$zVJ{dYdc-9sH$qESwG2Oil3MemG-PKRaF~% ze$irtImODUkM=FICY4rJiKJl|+wgl{jCj&s7PPAx>}w86-6G1qW(SxP$Vdc932bO zifRgxM@LbreT7XF91a)Z_uVBMqA5v!xrO|-KF@sg_u=FJ+!XfnHFxHCt@(pU-}e4- z+nTxk_FlODNnJ%PtCgdwyteCAH_Saw;<%ro_dc-Vup)mwlwxJelcWhRQcM-zL5HhM z2c8|TnzCu>z32Wb?~O&(e|>#&T5@vv!}T9qd1ly>AdS8%J%34A;lm=UE{S#s8of%S zqbB374}8(pK4~!FS*w|`SypA#C&~-*JBvi4LpesIkSq?LZ7bLvP9G88TT2i+|O^x8aj5SyJG~( zUjpoAISS+HUPAdYa0EE&?mLF^IPfdc=Yc%>5K{zvgytWCkAXh{h^`m-KXv`&Uv|_L z5A@u%`^3q&;!p6SA&;)2!8b@>9=(IK-r$&Xv%&nD*wtJkZ0~6TJ3MQLT1#UgMGhL+ z$?JBEMHeqEzFma9ojS0qGuuafI*l@eIh^9v@-e4Vof&+4r#6rO`!M+CO=s{8rqdQh zHaTS+`3wKG7XO&oGHYRJ$79Qpv0fP0X~d$}Ld1rr4dV89#u!;o`T}f_Iv&AqvPdj| zTb$W7PEo{`(^~OZU5qflSLNxlmg`|H&0R`e^xZI86&WK=zcWT?o4rNr5ijApAzGan z8E+7_3o-Q#D)ITdfwFlSX++(I2w#If(h%pGbs1(g@EN@<3yQ?1cO!ihVYleNth#8Z2aBGUWS+zf)Y~Y51nmE;_?Q+?}TSQ%rh7Jt#0-^ zS*OxRil(RU)ArPldPl}5c6ibRmnU_k?9g%_)$k9*+MLI?r(xD> zbv!KnL&?}^45lVThy&bJ59vRMCd-X+)(`M=~Qc5-9 ziozR$d~nGd;C!^*@A=PKTP5|SkYNkan}a>mS@_RG@R^CAau$9O%4}zPW>s=z>re_B z-9|DE#5vgan1R?c0yS4oJ5w09?~|H)P4xaIvtHoS~B*MN5W}< z91uZ4eRQ}fzAr|dIJ&R8-wJT89DFLpbc>z+qG{h+x$st+Egex5@YM`t*AaK>(HK6O z&Z*j+XZ<>|ztALXYi*+Wm;J=rwf?d$k|G=Z#!)HJBf>QQK6x>kbYkaA1$#mu^7c$% z>`faqQT?px`!QDsYspCBp~G=L@ygvu7&tX35Y->l_>4nz&HLt_N)N&}vHpmIUU7wa z-FaR~cTprgBcGj3tJ!fo+v5472kGbSeL{bF6gH4{H9yp4&>)-gDT#V;Kcta|?j}Ry zzS*>%0(cp1hc7B)#UF~pdqL$)O=eoZ>PBqO;ZLc z$XgZjS8v_Z1M7+|8Yd2%O6c8D6$Q4zvUw5pmrE*;PBq^_9s&GNx{k|7ctaqzvCk5^ zmG*?P(fH9k{7cP)UW6SBm+vm4iNT!1v>o24xKg|xD0+7Z4ffV@M9uMWpIY%f28`rkBaQzJD0%z8L|FmKQcx~J*~j?>0yblBinGkEZ9q)dBB}0~Ouj48mWUyl z;XdsWT~sJP^QL%vrjd3^x{prEx`h-cjG0H&yfY>4pEi78$~}2`Y55E8fl8zo7cMCv z4(_~tOjV*rJ3>a^MgxD0Kisj%_Zff0;_chZ{=9!M^e3I1{5J<70uPeETtpN5 z9Al&6JTy%w8@-lLA}gq$q(w5AAbv{}#uuC5 zVxxs6(tn#DjZiIC#L?&?NM@K^_A`2J+ZnPsU(^M@5lP7Fy@meQy;&8+7?ozbH>tzg z!x8Y-`F)_fqusZN^(Pa(I$Bd1q<~> zn~WY#;ZXc?@ef-#h6Ch*tyCtPhEudWGnp!-W+V-fPb{X@q9t1gf;5?>r~Boek))%o zE=|=h^OwnbTn=iwN2;gbj<9(!iffe;-vscy>4Gkn3Crk6)JHq7!5o$42F#wLrzf_> z(Q4VU67L(Wu~c`kk~4UG#2^nW$2(NpN-$aVX(*majYkpqk}6A5aF>@CP@J3}Pra#5 zo({wgh%JuByPluwfiZ}M@QDNBl&^i*;As7@hJK8sz8>BFkRqv2Nft`|q4^4z zKj6ksZdlvzbUiQn=@GI8%Fb@bA}=T42~{Uh6+h(B;+Q_A8}qdL+t>(Gm{G)B%*OXh z94pP01Y-bCyLz7ANV$~fvC1mit$tw_BC5Y)+e{_sY4=T3TI2u6Jyk0 zWPdtczEA6FHOPT8cc>w7&i^U9C7fF_eN+VxYDL&5#vw)1>Cojfb-6n5))M=;;GGGkWY}u%n*=Cv|!*x{3vj;j2 z&s2GOGG_d?MiG{Frp&R^_{Nk+=vXfib7|E7(L^3(K0ph;!2%k(wSZknt!H{>`_2@@ z=}F}N3OKm$U&<%wA@(05IY}#$IqB5U=GrXhb#i(-^+tGT5&M4|4SmZNHJ4UOzsVHI z4su5u<^K6P`Q~KkC%j%gkCcn@L!q)I1Kw%BQxD_6jXYc*fZ@{#Xm<@h${8$;Q!&%( z_WR8C;g3%g@?A5f{K%*dM!|YG8RZIs zEX8TE}t17{;+xKa8|qiy;!;+$xt_o}}gSuFZHG;0*irmLOEJx$dDP!C$W4f_vy^r$e%K3vFZ( jmrJvt5lp?mO<6Bb)X5eBLJaTrTZ;XhQl-NEf#?4KmpU$P delta 10402 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 Nvp)#%1A#&5{y(6VfSmvU diff --git a/Alogrithm/Alogrithm/Alogrithm.vcxproj b/Alogrithm/Alogrithm/Alogrithm.vcxproj index 92b69b2..7c3f8ef 100644 --- a/Alogrithm/Alogrithm/Alogrithm.vcxproj +++ b/Alogrithm/Alogrithm/Alogrithm.vcxproj @@ -155,6 +155,7 @@ + @@ -180,6 +181,7 @@ + @@ -204,6 +206,7 @@ + diff --git a/Alogrithm/Alogrithm/Alogrithm.vcxproj.filters b/Alogrithm/Alogrithm/Alogrithm.vcxproj.filters index a09d990..5ba3eae 100644 --- a/Alogrithm/Alogrithm/Alogrithm.vcxproj.filters +++ b/Alogrithm/Alogrithm/Alogrithm.vcxproj.filters @@ -93,6 +93,9 @@ 源文件\src + + 源文件\src + @@ -161,6 +164,9 @@ 头文件\include + + 头文件\include + @@ -229,5 +235,8 @@ 资源文件\config + + 资源文件\config + \ No newline at end of file diff --git a/Alogrithm/Alogrithm/config/23_RestoreIpAddresses.ini b/Alogrithm/Alogrithm/config/23_RestoreIpAddresses.ini new file mode 100644 index 0000000..6e53bfd --- /dev/null +++ b/Alogrithm/Alogrithm/config/23_RestoreIpAddresses.ini @@ -0,0 +1,30 @@ +[Test1] +Input=25525511135 +Output=255.255.11.135,255.255.111.35 +[Test2] +Input=1111 +Output=1.1.1.1 +[Test3] +Input=101010101010 +Output= +[Test4] +Input=11111111 +Output=1.1.111.111,1.11.11.111,1.11.111.11,1.111.1.111,1.111.11.11,1.111.111.1,11.1.11.111,11.1.111.11,11.11.1.111,11.11.11.11,11.11.111.1,11.111.1.11,11.111.11.1,111.1.1.111,111.1.11.11,111.1.111.1,111.11.1.11,111.11.11.1,111.111.1.1 +[Test5] +Input=1234567 +Output=1.23.45.67,1.234.5.67,1.234.56.7,12.3.45.67,12.34.5.67,12.34.56.7,123.4.5.67,123.4.56.7,123.45.6.7 +[Test6] +Input=00000 +Output= +[Test7] +Input=123456789101112 +Output= +[Test8] +Input=00 +Output= +[Test9] +Input=1921681125 +Output=19.216.81.125,192.16.81.125,192.168.1.125,192.168.11.25,192.168.112.5 +[Test10] +Input=255255255255 +Output=255.255.255.255 diff --git a/Alogrithm/Alogrithm/include/23_RestoreIpAddresses.h b/Alogrithm/Alogrithm/include/23_RestoreIpAddresses.h new file mode 100644 index 0000000..4467481 --- /dev/null +++ b/Alogrithm/Alogrithm/include/23_RestoreIpAddresses.h @@ -0,0 +1,5 @@ +#pragma once +#include +#include +char** RestoreIpAddresses(char* s, int* returnSize); +void dfs(char* s, int s_len, char** returnStr, int* returnSize, int step, int index, char* temp); \ No newline at end of file diff --git a/Alogrithm/Alogrithm/src/23_RestoreIpAddresses.cpp b/Alogrithm/Alogrithm/src/23_RestoreIpAddresses.cpp new file mode 100644 index 0000000..7acdaff --- /dev/null +++ b/Alogrithm/Alogrithm/src/23_RestoreIpAddresses.cpp @@ -0,0 +1,53 @@ +#include "../include/23_RestoreIpAddresses.h" +//ĿһֵַֻԭпܵIPַʽ +// ЧIPַĸÿλ0255֮ɣ֮ '.' ָ +//˼·֪һϷipַΪĶΣÿһζֱΪһλλλ +// ԿʹõݹķΪ֧Ϊúҷϵһε +// һһλ λ λ ʱ ʣַȷϺϷipַҪʹñҵڶ +// ÿβҶ¼ҵ˵ڼΣѲ鵽ĺϷipʱַĶβʱʱַصַ +// ȥ¼Ϸipĸ +void dfs(char* s, int s_len, char** returnStr,int *returnSize, int step, int index, char* temp) { + //ijһΪ1λʱʣµַܷɺϷipǣ4-step С 4-step3棺 + if ((s_len - index - 1 >= 4 - step) && (s_len - index - 1 <= (4 - step) * 3)) { + temp[index + step - 1] = s[index]; //ѷϵ1ַŵʱַĵstep + temp[index + step ] = '.'; //'.',һνһ + dfs(s, s_len, returnStr, returnSize, step + 1, index + 1, temp);//ݹ飬һ + } + //ijһΪ2λʱʣµַܷɺϷipǣ4-step С 4-step3 ҲΪ0ͷ棺 + if ((s_len - index - 2 >= 4 - step) && (s_len - index - 2 <= (4 - step) * 3) && s[index] != '0') { + temp[index + step - 1] = s[index]; //ѷϵ2ַŵʱַĵstep + temp[index + step] = s[index+1]; + temp[index + step + 1] = '.'; //'.',һνһ + dfs(s, s_len, returnStr, returnSize, step + 1, index + 2, temp);//ݹ飬һ + } + //ijһΪ3λʱʣµַܷɺϷipǣ4-step С 4-step3 Ϊ0ͷ ַɵ + //ֲܴ255棺 + if ((s_len - index - 3 >= 4 - step) && (s_len - index - 3 <= (4 - step) * 3) && s[index] != '0' && (s[index] - '0') * 100 + (s[index + 1] - '0') * 10 + s[index + 2] - '0' <= 255) { + temp[index + step - 1] = s[index]; //ѷϵ3ַŵʱַĵstep + temp[index + step] = s[index + 1]; + temp[index + step + 1] = s[index + 2]; + temp[index + step + 2] = '.'; //'.',һνһ + dfs(s, s_len, returnStr, returnSize, step + 1, index + 3, temp);//ݹ飬һ + } + //step = 5ʱ˵ĶѾ꣬ôtempеַ + if (step == 5) { + returnStr[*returnSize] = (char*)malloc(sizeof(char) * (s_len + 4)); + temp[index + step - 2] = '\0'; //һλġ.ijɡ\0 + strcpy(returnStr[*returnSize], temp);//Ҫص + (*returnSize)++; //Ϸַĸ1 + return; + } +} + +char** RestoreIpAddresses(char* s, int* returnSize) { + int s_len = strlen(s); //ַsij + if (s_len < 4 || s_len>12)//ȲϷֱӷNULL + return NULL; + char** returnStr = (char**)malloc(sizeof(char*) * 81);//ΪغϷipٿռ + char* temp = (char*)malloc(sizeof(char) * (s_len + 4));//һʱ洢õĺϷip + *returnSize = 0; //غϷipĸ + int step = 1; //stepʾ14step=5ʱ˵ip4ζˣء + int index = 0; //indexƶsܹ¼ʵsĵڼַ + dfs(s, s_len, returnStr,returnSize, step, index, temp); + return returnStr; +} \ No newline at end of file diff --git a/Alogrithm/Alogrithm/src/main.cpp b/Alogrithm/Alogrithm/src/main.cpp index e9e0524..de59cee 100644 --- a/Alogrithm/Alogrithm/src/main.cpp +++ b/Alogrithm/Alogrithm/src/main.cpp @@ -1,9 +1,13 @@ #include -#include "../include/22_Rotate.h" +#include "../include/23_RestoreIpAddresses.h" int main() { - int arr[] = { 1,2,3,4,5,6,7}; - Rotate3(arr, 7,3); + char str[] = "11112345"; + int m = 0; + char** res; + res = RestoreIpAddresses(str, &m); + for (int i = 0; i < m; i++) + printf("%s\n", res[i]); } diff --git a/Alogrithm/UnitTest/UnitTest.cpp b/Alogrithm/UnitTest/UnitTest.cpp index a193300..6e6d57e 100644 --- a/Alogrithm/UnitTest/UnitTest.cpp +++ b/Alogrithm/UnitTest/UnitTest.cpp @@ -24,6 +24,7 @@ using namespace Microsoft::VisualStudio::CppUnitTestFramework; #define FileName_20 "../Alogrithm/config/20_MoveZeroes.ini" #define FileName_21 "../Alogrithm/config/21_Reverse.ini" #define FileName_22 "../Alogrithm/config/22_Rotate.ini" +#define FileName_23 "../Alogrithm/config/23_RestoreIpAddresses.ini" @@ -318,6 +319,7 @@ namespace UnitTest } } }; + TEST_CLASS(UnitTest_17) { TEST_METHOD(TestMethode1) @@ -435,4 +437,29 @@ namespace UnitTest } } }; + TEST_CLASS(UnitTest_23) + { + TEST_METHOD(TestMethode1) + { + char Section_Name[100][10] = { 0 }; + int Section_Count = CalcCount(100, Section_Name, FileName_23); + CString Input, Output; + char Str_char[20]; + char** return_char ; + int return_len = 0; + char output_char[100][50]; + int output_len = 0; + for (int i = 0; i < Section_Count; i++) { + GetPrivateProfileString(Section_Name[i], "Input", " ", Input.GetBuffer(20), 20, FileName_23); + GetPrivateProfileString(Section_Name[i], "Output", " ", Output.GetBuffer(1024), 1024, FileName_23); + output_len = str_device2(Output, output_char); + strcpy(Str_char, Input); + return_char = RestoreIpAddresses(Str_char, &return_len); + Assert::AreEqual(return_len, output_len); //жϸǷ + for (int j = 0; j < return_len; j++) { //ѭȽ + Assert::AreEqual(return_char[j], output_char[j]); + } + } + } + }; } diff --git a/Alogrithm/UnitTest/UnitTest.vcxproj b/Alogrithm/UnitTest/UnitTest.vcxproj index d9f9aff..3468908 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/17_WordBreak.obj;../Alogrithm/Debug/18_PlusOne.obj;../Alogrithm/Debug/19_MySqrt.obj;../Alogrithm/Debug/20_MoveZeroes.obj;../Alogrithm/Debug/21_Reverse.obj;../Alogrithm/Debug/22_Rotate.obj;%(AdditionalDependencies) + ../Alogrithm/Debug/*.obj;%(AdditionalDependencies) diff --git a/Alogrithm/UnitTest/pch.cpp b/Alogrithm/UnitTest/pch.cpp index 119f44f..ac075ff 100644 --- a/Alogrithm/UnitTest/pch.cpp +++ b/Alogrithm/UnitTest/pch.cpp @@ -92,14 +92,14 @@ int str_device3(CString str, char* *return_str) { int value_count = 0; char* token; //存放被切割后的第一个子串 - char Section_value[500] = { 0 };//存放nums转换成string类型的结果 - memset(Section_value, 0, sizeof(char) * 500); + char Section_value[1024] = { 0 };//存放nums转换成string类型的结果 + memset(Section_value, 0, sizeof(char) * 1024); strcpy(Section_value, str);//将CString类型的字符串转换成char类型,方便后面切割字符串 //获得切割到的第一个字符串 token = strtok(Section_value, ","); /* 继续获取其他的子字符串 */ while (token != NULL) { - return_str[value_count] = (char*)malloc(sizeof(char) * 100); + return_str[value_count] = (char*)malloc(sizeof(char) * 1024); strcpy(return_str[value_count], token); token = strtok(NULL, ","); value_count++; //记录存了多少个元素 diff --git a/Alogrithm/UnitTest/pch.h b/Alogrithm/UnitTest/pch.h index 712d5ad..40fdd28 100644 --- a/Alogrithm/UnitTest/pch.h +++ b/Alogrithm/UnitTest/pch.h @@ -35,6 +35,7 @@ #include"../Alogrithm/include/20_MoveZeroes.h" #include"../Alogrithm/include/21_Reverse.h" #include"../Alogrithm/include/22_Rotate.h" +#include"../Alogrithm/include/23_RestoreIpAddresses.h"