From 7a76b8380f969241434d0aacd22aaa19c97e8ee6 Mon Sep 17 00:00:00 2001
From: linyongji <lyj18391569527@163.com>
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
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
NAldQ*Ykh$K{{U7}6iNU9

delta 9236
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

diff --git a/Alogrithm/Alogrithm/Alogrithm.vcxproj b/Alogrithm/Alogrithm/Alogrithm.vcxproj
index 7c3f8ef..7a3fa05 100644
--- a/Alogrithm/Alogrithm/Alogrithm.vcxproj
+++ b/Alogrithm/Alogrithm/Alogrithm.vcxproj
@@ -156,6 +156,7 @@
     <ClCompile Include="src\21_Reverse.cpp" />
     <ClCompile Include="src\22_Rotate.cpp" />
     <ClCompile Include="src\23_RestoreIpAddresses.cpp" />
+    <ClCompile Include="src\24_LengthOfLongestSubstring.cpp" />
     <ClCompile Include="src\2_ExcelSheetColumnTitle.cpp" />
     <ClCompile Include="src\3_bool IsUgly.cpp" />
     <ClCompile Include="src\4_IsPalindrome.cpp" />
@@ -182,6 +183,7 @@
     <ClInclude Include="include\21_Reverse.h" />
     <ClInclude Include="include\22_Rotate.h" />
     <ClInclude Include="include\23_RestoreIpAddresses.h" />
+    <ClInclude Include="include\24_LengthOfLongestSubstring.h" />
     <ClInclude Include="include\2_ExcelSheetColumnTitle.h" />
     <ClInclude Include="include\3_bool IsUgly.h" />
     <ClInclude Include="include\4_IsPalindrome.h" />
@@ -207,6 +209,7 @@
     <None Include="config\21_Reverse.ini" />
     <None Include="config\22_Rotate.ini" />
     <None Include="config\23_RestoreIpAddresses.ini" />
+    <None Include="config\24_LengthOfLongestSubstring.ini" />
     <None Include="config\2_ExcelSheetColumnTiTle.ini" />
     <None Include="config\3_bool IsUgly.ini" />
     <None Include="config\4_IsPalindrome.ini" />
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 @@
     <ClCompile Include="src\23_RestoreIpAddresses.cpp">
       <Filter>源文件\src</Filter>
     </ClCompile>
+    <ClCompile Include="src\24_LengthOfLongestSubstring.cpp">
+      <Filter>源文件\src</Filter>
+    </ClCompile>
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="include\2_ExcelSheetColumnTitle.h">
@@ -167,6 +170,9 @@
     <ClInclude Include="include\23_RestoreIpAddresses.h">
       <Filter>头文件\include</Filter>
     </ClInclude>
+    <ClInclude Include="include\24_LengthOfLongestSubstring.h">
+      <Filter>头文件\include</Filter>
+    </ClInclude>
   </ItemGroup>
   <ItemGroup>
     <None Include="config\3_bool IsUgly.ini">
@@ -238,5 +244,8 @@
     <None Include="config\23_RestoreIpAddresses.ini">
       <Filter>资源文件\config</Filter>
     </None>
+    <None Include="config\24_LengthOfLongestSubstring.ini">
+      <Filter>资源文件\config</Filter>
+    </None>
   </ItemGroup>
 </Project>
\ 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 <string.h>
+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]��ÿ���ַ���ASCII����Index�ж�Ӧһ��int�������int������ÿ���ַ����ַ���s���ֵ�λ��
+//		2.����һ�� int start�����������Ӵ�ÿ�εij�ʼλ��
+//		3.���������ַ���s����ij���ַ����ǵ�һ�γ��������Ӵ���ʼλ��֮�󣬻�ȡ�ظ��ַ�֮���Ӵ����ȣ�i - start����֮ǰ��������Ӵ��Ƚϣ�����ϳ�����һ��
+//		4.����start��Index[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<stdio.h>
-#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);