Programming Languages war
Python, PHP, Javascript (Nodejs)
Length of Longest Substring

Programming Languages war Python, PHP, Javascript (Nodejs) Length of Longest Substring

English

Carlos Rivas's photo
Carlos Rivas

Published on Mar 30, 2021

4 min read

Hey my friends, a new post about this war. I don't know which is better, but I'll try to figure it out. I hope y'all enjoy this series. Here we go!

This is a challenge of leetcode.com I made this challenge with Python3, and next I made PHP and Javascript the same way.

Problem:

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

Example 1:

Input: s = "abcabcbb" Output: 3 Explanation: The answer is "abc", with the length of 3.

Python

I know that I can receive any string, so I need to manage that in Python, I know that I can read a string letter by letter with a For loop, I create two variables "longest" and "newstr" as list, I create a try-except method to validate and to manage the method "index" if exist in the list the same letter, I receive the position the letter if exist in the new list and remove each letter before that with the method "remove", next I add the new letter to the new list with the method "append", and last I validate if the length to the new list is grater than the "longest" variable, I save in this variable.

class Solution:
  def lengthOfLongestSubstring(self, s: str) -> int:
    longest = 0
    newstr = []
    for letter in s:
      try:
        a = newstr.index(letter, 0)
        while a >= 0:
            newstr.remove(newstr[0])
            a -= 1        
      except:
        pass
      newstr.append(letter)
      if len(newstr) > longest:
        longest = len(newstr)

    return longest

sol = Solution()
result = sol.lengthOfLongestSubstring("abcabcbb")
print(result)

PHP

I know that I can receive any string, so I need to manage that in PHP, first, I need to validate if the string is different to void, I know that I can't read a string letter by letter with a For loop so I need to turn to array whit the method "str_split", I create two variables "longest" and "newstr" as array, I use the method "array_keys" to validate if exist in the array the same letter, I receive the position the letter in an array if exist in the new array and remove each letter before that, from the first with the method "array_shift", next I add the new letter to the new array, and last I validate if the length to the new array is grater than the "longest" variable, I save in this variable.

<?php
class Solution
{
    public function lengthOfLongestSubstring($s)
    {
        $longest = 0;
        $newstr  = [];
        if ($s !== "") {
            $s = str_split($s);
            foreach ($s as $letter) {
                $a = array_keys($newstr, $letter);
                if (count($a) >= 1) {
                    while ($a[0] >= 0) {
                        array_shift($newstr);
                        $a[0] -= 1;
                    }
                }
                $newstr[] = $letter;
                if (count($newstr) > $longest) {
                    $longest = count($newstr);
                }
            }
        }
        return $longest;
    }
}

$sol      = new Solution();
$result = $sol->lengthOfLongestSubstring("");

print_r($result);
?>

Javascript

I know that I can receive any string, so I need to manage that in Javascript,, I know that I can read a string letter by letter with a For loop, I create two variables "longest" and "newstr" as array, I use the method "indexOf" to validate if exist in the array the same letter, I receive the position the letter if exist in the new array and remove each letter before that, from the first with the method "shift", next I add the new letter to the new array with the method "push", and last I validate if the length to the new array is grater than the "longest" variable, I save in this variable.

class Solution {
  lengthOfLongestSubstring(s) {
    let longest = 0;
    let newstr = [];
    let a;
    for (const letter of s) {
      a = newstr.indexOf(letter, 0);
      while (a >= 0) {
        newstr.shift();
        a -= 1;
      }
      newstr.push(letter);
      if (newstr.length > longest) {
        longest = newstr.length;
      }
    }
    return longest;
  }
}

const sol = new Solution();
const result = sol.lengthOfLongestSubstring("abcabcbb")

console.log(result);

Conclusion

Structure: This time the three codes are very similar. Lines: Python: 21, PHP: 32, Javascript: 24 Time to execution: Python: 64 ms, PHP: 48 ms, Javascript: 92 ms Memory Usage: Python: 14.5 MB, PHP: 17.3 MB, Javascript: 40.9 MB

Would you like that I write about more challenges?

I hope you enjoy my post and remember that I am just a Dev like you!

 
Share this