w3resource

C Exercises: Find length of the longest substring of a given string without repeating characters

C Programming Practice: Exercise-2 with Solution

Write a C program to find length of the longest substring of a given string without repeating characters.

Note:
1) Given string consists of English letters, digits, symbols and spaces.
2) 0 <= Given string length <= 5 * 104

Difficulty: Medium.
Company: Amazon, Google, Bloomberg, Microsoft, Adobe, Apple, Oracle, Facebook and more.

Input String : xyzxyzyy
The longest Substring Length : 3
The longest substring : xyz

Input String : pickoutthelongestsubstring
The longest Substring Length : 8
The longest substring : ubstring

Input String : ppppppppppppp
The longest substring : p
The longest Substring Length : 1

Input String : Microsoft
The longest substring : Micros
The longest Substring Length : 6

C Code:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
static int length_of_longest_substring(char *str1)
{
   int offset[128];
   int substr_max_len = 0;
   int len = 0;
   int index = 0;
   memset(offset, 0xff, sizeof(offset));
   while (*str1 != '\0') {
       if (offset[*str1] == -1) {
           len++;
         }
                   else {
           if (index - offset[*str1] > len)
                                     {
               len++;
           }
                            else
                            {
                len = index - offset[*str1];
           }
       }
       if (len > substr_max_len)
                  {
           substr_max_len = len;
       }
       offset[*str1++] = index++;
   }
   return substr_max_len;
}
int main(void)
 {
   char *str1 = "xyzxyzyy";
         printf("\nOriginal String: %s", str1);
         printf("\nLength of the longest substring without repeating characters: %d\n", length_of_longest_substring(str1));
         return 0;
}

Sample Output:

Original String: xyzxyzyy
Length of the longest substring without repeating characters: 3

Pictorial Presentation:

C Programming: Find length of the longest substring of a given string without repeating characters.

Flowchart:

C Programming Flowchart: Find length of the longest substring of a given string without repeating characters.

C Programming Code Editor:

Contribute your code and comments through Disqus.

Previous: Write a C programming to get the indices of the two numbers of a given array of integers, such that the sum of the two numbers equal to a specific target.
Next: Write a C program to find the median of the two given sorted arrays which are not empty.

What is the difficulty level of this exercise?



C Programming: Tips of the Day

The tilde operator in C:

The ~ operator is bitwise NOT, it inverts the bits in a binary number:

NOT 011100
  = 100011

Ref : https://bit.ly/3DR1N24