Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

finding the time complexity of the program

How do we find the time complexity of below program? For the below program should the time complexity be O(N) or O(N*M) or O(N*M*M)?

Take-1: O(N)

  • to scan N elements in the input array

Take-2: O(N*M)

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

  • N is number of elements in the input array
  • M is length of the longest email address in the list for split and find

Take-3: O(N*M*M)

  • N is number of elements in the input array
  • first M is length of the longest email address until @ in the list for split
  • second M is length of the longest email address in the list for find
input_mails = ["abc@gmail.com","xyz@gmail.com"] 
for email in input_mails: 
    first_part, second_part = email.split("@") 
    position = email.find(".")
    print(first_part)

>Solution :

The time complexity of the given program will be N*2M ~ O(N * M) where:

N: number of elements in the input array (input_mails)
M: length of the longest email address in the list

Here’s how the operations contribute to the time complexity:

  1. Looping through N elements in the input array: O(N)
  2. Splitting each email address at @: O(M), as splitting depends on the length of the longest email address.
  3. Finding the position of .: O(M), as finding the dot also depends on the length of the longest email address. Now, one point to note here is find() has the worst case time complexity of O(p*q) where p being the length of the longer string, q, the shorter string you search for. But since you mentioned you need to find dot(.) so q becomes 1 and for the context of your code it becomes O(M).

References and further reading:

  1. Worst case time complexity of str.find() in python
  2. Further reading around str.find()
  3. Splitting and joining a string
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading