From 7a76b8380f969241434d0aacd22aaa19c97e8ee6 Mon Sep 17 00:00:00 2001 From: linyongji Date: Mon, 1 Feb 2021 08:46:10 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=86=E6=94=AF24=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Alogrithm/.vs/Alogrithm/v16/.suo | Bin 119296 -> 118272 bytes Alogrithm/Alogrithm/Alogrithm.vcxproj | 3 ++ Alogrithm/Alogrithm/Alogrithm.vcxproj.filters | 9 +++++ .../config/24_LengthOfLongestSubstring.ini | 30 +++++++++++++++++ .../include/24_LengthOfLongestSubstring.h | 3 ++ .../src/24_LengthOfLongestSubstring.cpp | 31 ++++++++++++++++++ Alogrithm/Alogrithm/src/main.cpp | 10 ++---- Alogrithm/UnitTest/UnitTest.cpp | 19 +++++++++++ Alogrithm/UnitTest/pch.h | 2 +- 9 files changed, 99 insertions(+), 8 deletions(-) create mode 100644 Alogrithm/Alogrithm/config/24_LengthOfLongestSubstring.ini create mode 100644 Alogrithm/Alogrithm/include/24_LengthOfLongestSubstring.h create mode 100644 Alogrithm/Alogrithm/src/24_LengthOfLongestSubstring.cpp diff --git a/Alogrithm/.vs/Alogrithm/v16/.suo b/Alogrithm/.vs/Alogrithm/v16/.suo index 0f4c65537abd7d3312fb944fbf032e1f63dba664..0d6b62671cd2abad719d04fc3196b866736ee970 100644 GIT binary patch delta 9145 zcmeI1dt6jUmdEe8bVKusprAaOmm!MEqj^76Y!nq4ga#RPd;$u{s({#0zz1kt9Suh4 zQg1$nB#IfM*%?JzNL^GI)nJD`^-Hl-qWOsD`$UH8e zFI9D_Zr!?d&OLRiy7nc9+D3(kS2p#sO|S5@|B%1Ij@FcnmxRxE@zcXDA9~AO-{h4{#W`f=uu@ z2nW9er$9Z>gYh63s6ZAN2J(SD;Ma=;VITzz24ev~aWv9cTYiWnzR>v83_!6zcmkL} z6yT;?kWK~JAReRxe~=2eek;;dw!DumWjS9)Tbbu`2J$n(ED#8|ejrlY{5BL1$?&#` z-H|Q?72rvmY$(ztU@52sRiGLy2i(;Pq$@!U$N?rf!)5?i%rF0M24HVB0P(ehe+}!I zJM7Xm>sbR>&(5GHJ+s=rt7q<`OV9mK&os8NuW0#(%po8vu)}q{{ z=QQNmp1brMi2M+7OVuxbHga*GOWoXKm%3T?y{Vhk%U`o{Rw0|Ev)W@hU@_} zupv7>{r^jw21(p=?jLL~OOgZ707u{ioPi5)1)e}8xM*v9kQo5HfH&Zg`6AT2$F1dBan^+ z$+9@&Jg}ksnlLn}gv!P3AMCYEZiCE&bkCC*Qyl4ZhOCZBlFaw|$SRX|jQCGEQW&*s zC|=yrc9LG)>6h+kac2D02}4z(F1-VU-U{kR5` z-pO8%+nYPmUC87=h~nV+y@lRGrP+ikc6wZ`9u5uM6srQp2%W4EwPhM{Dj-JGgYq)3 z?s+rh8dF-JigjuZPAezXAGwofC(LUZ8f-6u=e?w2cWQm;JQr$-(UOd^grkew5+FR+^mVdThfZo&$~GdGIa}l}^_^ zE+O+i;FtRl=`Blzb4Jn^$ovU(fZO0p@MrK1xC6che*t`>8l%03d?%1(ac|Bz%{t_G z8MREQac(o2gOe{(&pK!tZEu=UNg1MQM!F-hb7sfNcZ!Y~xvC*u1>;PEW(^AL*DMpq z{#G{Mc{iOLiJc%XtJVh&$R%;2C`{b;%F^%(?O>}BM(;Z1>Pga@^_gwzraD>FPKJq3 zeveEc7IRid<6Rs@RmhJt198tF+kJ94VvLZL_UlpJ;wq|#tZkYmKh(qyfB1=&l>J4N zC=xci1!k4xC&b^~67loY_m?boZtSSexcutgDml`B(pQU5Wo@qz=Yl-U%QvqfQ=Udo5wiH)w)Th_DHqWBBz^z@;1wqo);95yhE4R;gLFI^~?1 ze8u5qT1PHgMUGh%?=bakUSB0Ke&RsooirLC^bG99f|Y8*&UyT!48*PE%j)7?~=s_{inVZb__m04npd!*>7G-x=m-~iED zQDxBZdhclyxCSDl0(`w7QdX=|p4~$J=Izhqktw0S=pQvp&0*e3Q5BV?>Vq72Lo>zg zs4UGG6zyyxVT`U5wTaM2Wz0j4#U&7Zb&W;YagauekuQy{*$10sH+cym+s8=lU^rKi z1|vjY3zPk%FWfKEI=s^cq(8! zh-Q(Vgf2cs+JRZ*2*p<=5{~Q?6`EFwz9^WI~o@g~QXVbC@P>L&R|?zqeI8iEAA4P{3vG{0*r@ z`-&)~c^}!E6SkiqQOkcOy=#oxx(9K@E@mYxGEz=i&~%fUX2GS|n#A|qWM^9kxkbe+ zHWpSy*ZH>ZITabW))UL9PU!db5nGxUjnd=UtY*Btl(L|#xT3^3Z{dtNWu-+W#WSLM zv(M5JKgrR2w1awo!o){>f@PW~VRSs*>k*? zxVfZ#_p!P${#i+#L7!)y3M_u=_ZLno>{SPR-?f#NEMIn5ITk@R5BYTKBI8}N^YT}} zEPSlIQ5UjhXY(AdYvG&LOz^`>IIi8HSzC;@8n6k89v zi?-L6{!MX%YfOApXmsSap@Y^MI+&B+(9olV3LhE*l`C3u@P43a_7E(r%B)gOog;rS zwSAu0@j`$&+U)EUl^B|69iO?Q{S;BL*l{F)okI7TKewmQtSFpl{gXR}@sWa@=KSp& zsz-_YMfL|NX8n~mwMm<*;e)%!fi+mrVl&x2U=|%(gT@Wj2!L!&{Lo||O1uQ}P0mY^ z;WZGK=zQ+DHFDjv1jUvshxw-#1=z~hL47ull~A+H8Ua9fCZM-!g^N9 z>jPpV%NZHRawUMrGXd+zT(ql{reo!p4*5*W8DdZO=i|80hw~?OKUf8J0O-#(1e)C}~qS)|aj; z{4z5}q*RadW+>4nappiF$NDhy(oab?%}urJgd=PX z%+{T7QUIx?^(^atFkl>R&}@Xz-`3dqZS=$;1(%mzkCpdHV(;}vH@6>S8hNa_)^`_g z-a87ebWq(RJJP z?u)LcFMkU1*DqCn)aSIYr3jxx+M$KM@j!gW@bM5$yNDb)Z8SXJQH+iCo*osv~TLfGq*Fun;mY# zsh&vdlv*MuF*PSdc~MQi zieWmri1OVkdnZ^)>aQ#h>wV=`vh67}D4@5E$ei->Y07?28WGUTi0?P*CAw2cOOret zFtlO71z?kBxkUbrVd9I=rYYOPXprMbn|!z!bvO10FnvRNe{X0iRW~*=C3Z|)nCVDc z50L@|j#BdNN&CZ^XSQJ+vK)D-=MlGjqbITG;2@FL>GN{!5R$iiPI^iU9q*s))YFe#abfEoIFVKl{-ArDJX)={6tJD;z{6a(C5F|~ZHlNg z(5d;*0;tLDyBk>6gqnTQvz9%qGHpKj2%n}RzXu=Ym6pt89~EzLt-U!axYlkhdoc&) zMhcC$cvLkGyd+1ZErW8!R71#?X7W>-RWP(7gO8<#oYx0?KI3$fN_L6r|ykX`4Wr)`6vT`L8=zLrrR>;0)vtnrxz*M2D2@Ika@_qisZS{)@?eU0Ib*HK`A`qwV@dBM%)_NFpVuymkA}=_-P( zuF>1^?@So>Hfp!qx|za%;6u-I-SsBPTTjyJ*42k;rRyQ&F6{E7{0oS%Ymgwqvb+5MD7)-pL=YBS2(bhNb`cr_6jp_3WaA~K zsU(4&%J@XB-c4#XP5fb_+op-4iEWzX8f|Uvjap5uH_dGmV|q#M)mG@4Z+CHx+UDAr zJkNbHJTEhI=FEIEbIzP|X4bmJ&-$$2pi<6r?i9>%(O48C#wR8w7}W=1+*kP*fGi^C zEa@c<$f@ofZaW8cT=aD|9K#C${)VlHAHVk$y~P$C%rlbEv^OyRgbE*1;-AS4Jm zA{_A&A_EbRn2jhw97Vi^P#`pjyAb|}1jJ%Q7-Bji1u+dV10h0a5qBflhm$ccLS(w@ z#T@ywD73E;t67M2L?nVBeu4-=ux=HY2O!jla>PP}453G`wa>zw?b~yhGyVTrmQg`o?K`%_>8u{I|~FYj2^)n;jZu&%qSxlWzlP-X76baa_Zb`tIC zUU52ZRu$dX0xE~H{J7Y@iMQAA|I|)zaU?7`1GWV{U?RN>7D@$=#=McRd1DKV4R-vU{=bS?ibI_#z85*aoz>+cdoqd`!TG&e!K z6$K$Bm(8UTW-b+OvcuA10LeV8F~7)q`j=v%4T071{P_}QNN2K&Ahv?N;7BmZfV?&p z50e=Wm@<(hD(xcX-vpL1WgytU?R#_S+5gDXkrq%ol$PT@w$5M@JdhzwGu7RlSO$bs zN5%#Wk_03&H|$!_69)1cuMChO!F@y=6TJ{>H}dcU@<{(9G;$-vIkrE!6l|shN5Xq& zfK;AKBpH{315_ARWO3QdIg`WZ3W@at>yNAez~+)ea_WO+0ncCfpIHSTjLM%|cfV1( z?i`uF@${?Kb+w^8&tLh|KyN=eArE(~sqcr|nzUG$H0g~=btJZK1)>X41-^jmV2+k0 z0zIiDwaZ_o?e&j%d5w18?gD<{Q|%9){qKf1mi2x7%LPSwc|9BK?_1b3P|+j(*355Q z-fiAMPVCNcjCN^oTCcKE$yldR#3CZsmVL({VeuaepBN#4ZDkE{dIpV+0+STg zzqzBmrEM7r**%TCxJRa$D};$?tb_<_HK#+TR)nF?e6#@R7^bBnU5hoHP|8Iisj;NR z7QIli9kNc#K~6o=SdVPvV5M9xhyE@IX2VVbvO;p?VKr4e1HO)&?XLqpqJePQ{s8#W zm?CHi9vqD+{G=g$z;lX;p*e~Sbw}OUFxV4L47-A8wHEH48l+Y?RCQPyEoMbqds`{( z42Ep7?VtoX0^#~9t<`~!@auC(?)OXjOnBm$skfo&`UB=a!4Tv;=06DKI1?T`|0s@Q z{xlhFqaEvk7(8x66Z|I`$Nd-5!|%d2q_4%3kbwDlbPo4p-j~dAf5dzjs<<12gR`b#pSV1{GI{+o}-$3xX4zh5jh$^OX3vTBXd& zR%a^JTgc)1M`+En5KGQ(oVmy~#I^sAV&C-$X2rjYs782Nmw1(*!t%Gg>Ws&U0VG+P z6eZn;4cievWD#YcXvh>C^t_vwY4iS}%J@Emo4{=JPZ7+?R=R1gV15vB2yxg=JA(PE zh@ZRb%!9w-E_){UCf1K3{tbcB;NC_YN1Q}F59!r8m}^w!@XYh|Ic!`wVAeSFe*6wL7`x*?U!MP zA3z+MEA6D;ZfkE|zQSa#n>_X8SW$97W=ck;%R;V23z_de|D9y}-Tq|Hqf!#KdjWJ{ zi;5cJK}rt1s0heT$yB+ztipylwi=8ZM@|7f9D-Kq<6w}Gto=!WDrJf)!^QTUYyF3J zABB~kY9!gaKbUsWg}v2>+DK>}!rE z%Q5=$dZ6>8;GwU`Vc0M5wj-k{%4_N2HR{|HRjzANIhnbp)ZC0_vpUnH%278pKCC~) zj&JzL;ZeBO>$*O506N;iocD(YE^6E(GL8Kp*b#eAc)4vQ2D2h}kjJ*d;_x||P4T_?H?V1p| zeC+b0NGB&R_K3_DOB*qKyw3q2E(B3#j%vQ6;v*H@@el5`5A(K5OUUwb64G=jhvg3Y zrFyV$5!vS9;hMb8O@_ag(t(?F@F7*d)HpP+kBaG~cBpmK{wf&yrn+~F?HEhmISUTa zS94wXOk&|yVBU^#d^0|dG-BEH`c#6nPHeMaorTOd=lvGGUa@Nvv_l}5z3HA3%M091o>{(k5%22oQPf>6*kI&}@omb8Q`F(Zj~2^|@#+BZjC)%@pMAPF-et))_q+brXF@m;h zf4KRiXP=36#`?eoKKQ}LZi~6gD}-a0=)zsnP~ovJ@q_r#c)T*P>oSXLT}im0QKbY1?K^>f zD25p4DG4OPj;R3lH-!5}tPtoxST3jSY2Xh>Cj*ph zbZZf`DIVhJ)KCb5=V?Vgto7+^Zl#U!5HAqv6LLtW@pCbxd3!dz2fvu?t#&)cX|ys8 z!)R0<0M7rV{3~HWU7B0X2_$s00#wfOe0Ur}*!(>y5DU5FT(z9alA*tGfO+p+|QNaqCuwZFxGV?w?T6QZO;!7!85RwdE+5SSjxqH9m`#{xUg`dce9 z3$>%c$l~mL61>N&82| z8?%~}spj;I%+%pP7`@T_4ab7@>$Q5Wn?8jwh^AH@${ugolL>Fog3;68$_&9YcFW>h zYg~6MSLhxI*H;C-Vx~aY;XcpRjai^cMKe^Fml%!3i;ao}Dpf{ihDxbY>htPqN)}gZ z%N84}^(7T`HM%-&b!|ymiMHy#x|+pxo-TDI<+`$JeQ}-6Fgc8N@#5ktVKAjKTaAOU zD64&0_xv{6vI?TLCCvFUC~xy))H(+=G=CKY&^K4Y3Sw1g4#a`xCjR3`=s$S8W@wzF zvtSg6HYF`hNQ{YiqHMZ z@cAcBstLxp)yv(bL4y;@VL~i~I>H7;+|<5Nc>ySeT?{$Gj)ssVqrxTRR`JjtCm3M@ z0=#|#VGqC}jK&3D8{^Py8pQ{YtsrM!R~S8#J65B+HuU zdQb;Zu!(5b^wA~*#L&@7kT_?y!&x|xfLDiaZ2WaL{wqI(ek62Ls57(&E&@4HT;x)q zPOyt9|121t#&z&K>=-~_teu(SOlg9X`18^dFgOjvu-9kU1`6n+A + @@ -182,6 +183,7 @@ + @@ -207,6 +209,7 @@ + diff --git a/Alogrithm/Alogrithm/Alogrithm.vcxproj.filters b/Alogrithm/Alogrithm/Alogrithm.vcxproj.filters index 5ba3eae..08d2938 100644 --- a/Alogrithm/Alogrithm/Alogrithm.vcxproj.filters +++ b/Alogrithm/Alogrithm/Alogrithm.vcxproj.filters @@ -96,6 +96,9 @@ 源文件\src + + 源文件\src + @@ -167,6 +170,9 @@ 头文件\include + + 头文件\include + @@ -238,5 +244,8 @@ 资源文件\config + + 资源文件\config + \ No newline at end of file diff --git a/Alogrithm/Alogrithm/config/24_LengthOfLongestSubstring.ini b/Alogrithm/Alogrithm/config/24_LengthOfLongestSubstring.ini new file mode 100644 index 0000000..4a5ce4d --- /dev/null +++ b/Alogrithm/Alogrithm/config/24_LengthOfLongestSubstring.ini @@ -0,0 +1,30 @@ +[Test1] +Input=abcabcbb +Output=3 +[Test2] +Input=pwwkew +Output=3 +[Test3] +Input=aaaa +Output=1 +[Test4] +Input=aaaabbbbcccc +Output=2 +[Test5] +Input=asdferzzfa +Output=7 +[Test6] +Input=!@qqqwec,.pldfkfgooowf +Output=11 +[Test7] +Input=lyj18391569527@163.com +Output=12 +[Test8] +Input=www.baidu.com +Output=9 +[Test9] +Input=*****ABCabcbb***** +Output=7 +[Test10] +Input=()(@!,szadBNb) +Output=12 \ No newline at end of file diff --git a/Alogrithm/Alogrithm/include/24_LengthOfLongestSubstring.h b/Alogrithm/Alogrithm/include/24_LengthOfLongestSubstring.h new file mode 100644 index 0000000..5358553 --- /dev/null +++ b/Alogrithm/Alogrithm/include/24_LengthOfLongestSubstring.h @@ -0,0 +1,3 @@ +#pragma once +#include +int LengthOfLongestSubstring(char* s); \ No newline at end of file diff --git a/Alogrithm/Alogrithm/src/24_LengthOfLongestSubstring.cpp b/Alogrithm/Alogrithm/src/24_LengthOfLongestSubstring.cpp new file mode 100644 index 0000000..8c1ad93 --- /dev/null +++ b/Alogrithm/Alogrithm/src/24_LengthOfLongestSubstring.cpp @@ -0,0 +1,31 @@ +#include "../include/24_LengthOfLongestSubstring.h" +//ĿһַҳвظַӴijȡ +//˼·: 1.һIndex[128]ÿַASCIIIndexжӦһintintÿַַsֵλ +// 2.һ int startӴÿεijʼλ +// 3.ַsijַǵһγӴʼλ֮󣬻ȡظַ֮Ӵȣi - start֮ǰӴȽϣϳһ +// 4.startIndex[s[i]]ظַһγλõһַ +// 5.ѭȡӴ󳤶ȣȽϵõַ +// 6.һַҲظַʱһstartһַij +int LengthOfLongestSubstring(char* s) { + int Index[128] = { 0 }; //ÿַASCIIΪ±꣬Index洢ÿַַsеλ + int len = 0; //Ӵijȣÿظַʱ¼ + int max = 0; //ӴΪֵ + int i = 0; //iַs + int start = 0; //Ӵʼλõ±꣬ÿظӴʱλ + for ( i = 0; i < strlen(s); i++) { + if (Index[s[i]] > start) { //жַDzǵһγ֣ұʼλҪ + len = i - start; //õǰӴij + if (len > max) { //ǰӴԭӴΪǰӴ + max = len; + } + start = Index[s[i]]; //Ӵʼλ:ظַһγλõһַ + } + Index[s[i]] = i + 1; //ѵǰַַsеλ÷ŵIndexУַγ־͸Ϊֵλ + } + len = i - start; //һַûҵظַһӴij + return len > max ? len : max; +} + + + + diff --git a/Alogrithm/Alogrithm/src/main.cpp b/Alogrithm/Alogrithm/src/main.cpp index de59cee..dca5417 100644 --- a/Alogrithm/Alogrithm/src/main.cpp +++ b/Alogrithm/Alogrithm/src/main.cpp @@ -1,13 +1,9 @@ #include -#include "../include/23_RestoreIpAddresses.h" +#include"../include/24_LengthOfLongestSubstring.h" int main() { - char str[] = "11112345"; - int m = 0; - char** res; - res = RestoreIpAddresses(str, &m); - for (int i = 0; i < m; i++) - printf("%s\n", res[i]); + char s[] = "lyj18391569527@163.com"; + printf("%d\n", LengthOfLongestSubstring(s)); } diff --git a/Alogrithm/UnitTest/UnitTest.cpp b/Alogrithm/UnitTest/UnitTest.cpp index 6e6d57e..f1acc43 100644 --- a/Alogrithm/UnitTest/UnitTest.cpp +++ b/Alogrithm/UnitTest/UnitTest.cpp @@ -25,6 +25,7 @@ using namespace Microsoft::VisualStudio::CppUnitTestFramework; #define FileName_21 "../Alogrithm/config/21_Reverse.ini" #define FileName_22 "../Alogrithm/config/22_Rotate.ini" #define FileName_23 "../Alogrithm/config/23_RestoreIpAddresses.ini" +#define FileName_24 "../Alogrithm/config/24_LengthOfLongestSubstring.ini" @@ -462,4 +463,22 @@ namespace UnitTest } } }; + TEST_CLASS(UnitTest_24) + { + TEST_METHOD(TestMethode1) + { + char Section_Name[100][10] = { 0 }; + int Section_Count = CalcCount(100, Section_Name, FileName_24); + CString Input, Output; + char Str_char[1024] = { 0 }; + char* WordDic[100]; + for (int i = 0; i < Section_Count; i++) { + GetPrivateProfileString(Section_Name[i], "Input", " ", Input.GetBuffer(200), 200, FileName_24); + GetPrivateProfileString(Section_Name[i], "Output", " ", Output.GetBuffer(20), 20, FileName_24); + strcpy(Str_char, Input); + int nReal = LengthOfLongestSubstring(Str_char); + Assert::AreEqual(nReal, _ttoi(Output)); + } + } + }; } diff --git a/Alogrithm/UnitTest/pch.h b/Alogrithm/UnitTest/pch.h index 40fdd28..dbe2c0c 100644 --- a/Alogrithm/UnitTest/pch.h +++ b/Alogrithm/UnitTest/pch.h @@ -36,7 +36,7 @@ #include"../Alogrithm/include/21_Reverse.h" #include"../Alogrithm/include/22_Rotate.h" #include"../Alogrithm/include/23_RestoreIpAddresses.h" - +#include"../Alogrithm/include/24_LengthOfLongestSubstring.h" int CalcCount(int n, char(*str)[10],const char *FileName);