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

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

English

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!