My program is taking so long. How can I make this run fast?

#include <stdio.h>

using namespace std;

int main()
char *j= new char [25];
int z=0;
while (z==0)
bool check=0;

for (int n=0, i=n+1; j[n]!=’\0’; n++, i=n+1)
for(; j[i]!=’\0’; i++)




return 0;


Refer my solution. Here’s the link.

The problem with your code it that it is running in O(n^2) time. You can use a hashset (called unordered set in c++ STL) to easily do this in O(n) time . I don’t know much c++ so I will write you a pseudocode of how you can do it :

  1. take the string as input
  2. declare an empty hashset of characters , and a variable flag as false
  3. for each character in the string :
    1. check whether it exists in the hashset
      If it exists : print “yes” , set flag to true and break
      else : insert it into the hashset
  4. after loop completes , if flag is false print “no”
  5. done

How is this O(n) ? basically it makes use of the fact that checking and insertion in hashset is O(1) , and you will be using one/both of these operations per character of the string.

To use a hashset in c++ you can use the STL , or if the strings consist of only ascii characters you can easily do it using a single array.

I would definitely recommend you to look into hashsets and hashmaps as these are very powerful and much useful in programming contests.

You can read up on unordered sets in C++ STL from this link