LeetCode 3

Posted Juntaran

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 3相关的知识,希望对你有一定的参考价值。

Longest Substring Without Repeating Characters

Given a string, find the length of the longest substring
without repeating characters.

Examples:

Given "abcabcbb", the answer is "abc", which the length is 3.

Given "bbbbb", the answer is "b", with the length of 1.

Given "pwwkew", the answer is "wke", with the length of 3.
Note that the answer must be a substring,
"pwke" is a subsequence and not a substring.

 

 1 /*************************************************************************
 2     > File Name: LeetCode003.c
 3     > Author: Juntaran
 4     > Mail: [email protected]
 5     > Created Time: Tue 17 May 2016 17:10:02 PM CST
 6  ************************************************************************/
 7 
 8 /*************************************************************************
 9     
10     Longest Substring Without Repeating Characters
11     
12     Given a string, find the length of the longest substring 
13     without repeating characters.
14 
15     Examples:
16 
17     Given "abcabcbb", the answer is "abc", which the length is 3.
18 
19     Given "bbbbb", the answer is "b", with the length of 1.
20 
21     Given "pwwkew", the answer is "wke", with the length of 3. 
22     Note that the answer must be a substring, 
23     "pwke" is a subsequence and not a substring.
24 
25  ************************************************************************/
26 
27 #include "stdio.h"
28 
29 /* 8ms */
30 int lengthOfLongestSubstring(char* s)
31 {
32     int n = strlen(s);
33     
34     if( n <= 1 )
35     {
36         return n;
37     }
38     
39     int i = 0, j = 0;
40     int maxLen = 0;
41     int exist[256] = { 0 };
42     while( j < n )
43     {
44         if( exist[s[j]] )
45         {
46             maxLen = maxLen>(j-i) ? maxLen : (j-i);
47             while( s[i] != s[j] )
48             {
49                 exist[s[i]] = 0;
50                 i++;
51             }
52             i++;
53             j++;
54         }
55         else
56         {
57             exist[s[j]] = 1;
58             j++;
59         }
60     }
61     maxLen = maxLen>(n-i) ? maxLen : (n-i);
62     return maxLen;
63 }
64 
65 /* 36ms */
66 int lengthOfLongestSubstring2(char* s)
67 {
68     int len = 0;
69     int p=0 , q=0,  i; 
70 
71     for( q=0; q<strlen(s); q++ )
72     {
73         for( i=p; i<q; i++ )
74         {
75             if( s[q] == s[i] )
76             {
77                 if( q-p > len ) len = q-p;
78                 p = i+1;
79             }
80         }
81     }
82     len = len>q-p?len:q-p;
83     return len;
84 }
85 
86 int main()
87 {
88     char* s = "abccab";
89     int ret = lengthOfLongestSubstring(s);
90     printf("%d\n", ret);
91     
92     return 0;
93 }

 

以上是关于LeetCode 3的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode810. 黑板异或游戏/455. 分发饼干/剑指Offer 53 - I. 在排序数组中查找数字 I/53 - II. 0~n-1中缺失的数字/54. 二叉搜索树的第k大节点(代码片段

LEETCODE 003 找出一个字符串中最长的无重复片段

Leetcode 763 划分字母区间

LeetCode:划分字母区间763

VSCode自定义代码片段3——url大全

VSCode自定义代码片段3——url大全