Browse Source

分支24完成

master
linyongji 4 years ago
parent
commit
7a76b8380f
9 changed files with 99 additions and 8 deletions
  1. BIN
      Alogrithm/.vs/Alogrithm/v16/.suo
  2. +3
    -0
      Alogrithm/Alogrithm/Alogrithm.vcxproj
  3. +9
    -0
      Alogrithm/Alogrithm/Alogrithm.vcxproj.filters
  4. +30
    -0
      Alogrithm/Alogrithm/config/24_LengthOfLongestSubstring.ini
  5. +3
    -0
      Alogrithm/Alogrithm/include/24_LengthOfLongestSubstring.h
  6. +31
    -0
      Alogrithm/Alogrithm/src/24_LengthOfLongestSubstring.cpp
  7. +3
    -7
      Alogrithm/Alogrithm/src/main.cpp
  8. +19
    -0
      Alogrithm/UnitTest/UnitTest.cpp
  9. +1
    -1
      Alogrithm/UnitTest/pch.h

BIN
Alogrithm/.vs/Alogrithm/v16/.suo View File


+ 3
- 0
Alogrithm/Alogrithm/Alogrithm.vcxproj View File

@@ -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" />


+ 9
- 0
Alogrithm/Alogrithm/Alogrithm.vcxproj.filters View File

@@ -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>

+ 30
- 0
Alogrithm/Alogrithm/config/24_LengthOfLongestSubstring.ini View File

@@ -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

+ 3
- 0
Alogrithm/Alogrithm/include/24_LengthOfLongestSubstring.h View File

@@ -0,0 +1,3 @@
#pragma once
#include <string.h>
int LengthOfLongestSubstring(char* s);

+ 31
- 0
Alogrithm/Alogrithm/src/24_LengthOfLongestSubstring.cpp View File

@@ -0,0 +1,31 @@
#include "../include/24_LengthOfLongestSubstring.h"
//题目:给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。
//思路: 1.定义一个Index[128],每个字符的ASCII码在Index中对应一个int数,这个int数保存每个字符在字符串s出现的位置
// 2.定义一个 int start,用来保存子串每次的初始位置
// 3.挨个访问字符串s,当某个字符不是第一次出现且在子串起始位置之后,获取重复字符之间子串长度:i - start,和之前保存最长的子串比较,保存较长的那一个
// 4.更新start到Index[s[i]],该重复字符上一次出现位置的下一个字符
// 5.循环获取子串,求长度,比较得到长的字符串
// 6.当最后一个字符找不到重复字符时,计算最后一个start到最后一个字符的长度
int LengthOfLongestSubstring(char* s) {
int Index[128] = { 0 }; //每个字符的ASCII码作为数组的下标,Index用来存储每个字符在字符串s中的位置
int len = 0; //存放子串的长度,每次遇到有重复字符时重新计算
int max = 0; //存放最长子串,作为返回值
int i = 0; //变量i,用来访问字符串s
int start = 0; //子串起始位置的下标,每次遇到重复子串时更新位置
for ( i = 0; i < strlen(s); i++) {
if (Index[s[i]] > start) { //判断字符是不是第一次出现,且比起始位置要大
len = i - start; //获得当前子串的长度
if (len > max) { //如果当前子串比原来的子串长,则更新为当前子串
max = len;
}
start = Index[s[i]]; //更新子串的起始位置:该重复字符上一次出现位置的下一个字符
}
Index[s[i]] = i + 1; //把当前字符在字符串s中的位置放到Index中,如果字符多次出现就更新为最后出现的位置
}
len = i - start; //如果遍历到最后一个字符,但是没找到重复的字符,则计算最后一个子串的长度
return len > max ? len : max;
}





+ 3
- 7
Alogrithm/Alogrithm/src/main.cpp View File

@@ -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));
}

+ 19
- 0
Alogrithm/UnitTest/UnitTest.cpp View File

@@ -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));
}
}
};
}

+ 1
- 1
Alogrithm/UnitTest/pch.h View File

@@ -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);


Loading…
Cancel
Save