Python Challenge aus dem Vorstellungsgespräch - Längste Zeichenfolge

preview_player
Показать описание
Heute sehen wir uns eine Frage aus einem Python Job Interview an - könnt ihr sie lösen? * *Meine Website mit allen anderen Kanälen und Newsletter* *:

_Discord:_

_Unterstützt mich - Danke!:_
Рекомендации по теме
Комментарии
Автор

Mit C#:
static string LongestSubstring(string s)
{
string result = "", res="";
int length = 0, n=0;

while (n<s.Length)
{
if (!res.Contains(s[n]))
res += s[n];

else if(res.Contains(s[n]))
{
if(res.Length>length)
{
length = res.Length;
result = res;
res = "";
}
res += s[n];
}
if(n==s.Length-1)
if (res.Length > length)
{
length = res.Length;
result = res;
}
n++;
}
return result;
}

Ist allerdings, wie man unschwer erkennen kann, etwas länger. Sehr schönes Video wie immer!

anonymoususer
Автор

Finde das gut, wenn du es selbst zum ersten Mal programmierst👍🏻

jk-jhzs
Автор

Fühlt sich sehr kompliziert an was du machst. Einfacher (und sicherer, weil kein while ;) ) fände ich den Ansatz:

[** LÖSUNG IST FALSCH **]

def logestSubstring(s):
result, tmp_result = [], []
for letter in s:
if letter not in tmp_result:
tmp_result.append(letter)
else:
if len(tmp_result) > len(result):
result = tmp_result.copy()
tmp_result = [letter]
return ''.join(result)

janga
Автор

Wait whuuuut, es gibt echten Zufall? Ich glaub ich geh doch Lotto spielen :D.

jwlzloff
Автор

Python:
def longest_substring(s):
longest = ""
for i in range(len(s)):
substring = ""
while i < len(s) and s[i] not in substring:
substring += s[i]
i += 1
if len(substring) > len(longest):
longest = substring
return longest

pianfensi
Автор

Oder auch mal so:
def longestSubstring(s):
sequence, chars = "", ""
for char in s:
if not char in chars: chars += char
else: chars = char
if len(chars) > len(sequence): sequence = chars
return sequence

hansgriesser
Автор

Hey, wollt auch mal meine Lösung reinstellen =)

substring = ""
y = 1
i = 0

while i < len(s):
if s[i] in substring:
sliced[substring] = len(substring)
substring = ""
i = y
y += 1

else:
substring = substring + s[i]
i += 1

return max(sliced, key=sliced.get)

manybarrylow
Автор

Vielen Dank, ich mag so kleine Aufgaben für die Mittagspause, musste mir deshalb extra die Python Syntax drauf schaffen (deshalb auch extrem allgemeingültiger Code, ohne coole Python-Features), hier meine Lösung, die komplette Funktion, bitte gerne eventuelle Fehler korrigieren:

def longest_substring(s):

kandidat = ""
spitzenreiter = ""
len_kandidat = 0
len_spitzenreiter = 0

for aktuelles_zeichen in s:

if aktuelles_zeichen not in kandidat:
kandidat = kandidat + aktuelles_zeichen
len_kandidat = len_kandidat + 1

elif len_kandidat > len_spitzenreiter:
spitzenreiter = kandidat
len_spitzenreiter = len_kandidat
kandidat = aktuelles_zeichen
len_kandidat = 1

if len_spitzenreiter > len_kandidat:
print("Laengste Zeichenfolge:", spitzenreiter, "mit", len_spitzenreiter, "Zeichen")
else:
print("Laengste Zeichenfolge:", kandidat, "mit", len_kandidat, "Zeichen")

sofortaufsklo
Автор

Ein Versuch

import random
import string

test_string = for i in
sequences = []
temp_str = ""
for i in range(len(test_string)):
if test_string[i] not in temp_str:
temp_str += test_string[i]
else:

temp_str = ""
sequences.sort(key=len)
print(sequences[-1], len(sequences[-1]))

masterbe
Автор

Ich musste erst ein wenig überlegen, aber dann hab ich es tatsächlich fast genau so wie du gelöst (ohne das Video vorher geguckt zu haben) :D

Anmerkung fürs nächste mal: Am besten den String mit in die Videobeschreibung :D
Aber gute Challenge!

function longestSubstring(s){
var str = '';
for(var i=0;i<s.length;i++){
var chars = {}
for(var j=i;j<s.length;j++){

chars[s[j]]=1;
}else{
var st = s.substring(i, j)
if(st.length>str.length) str = st
break;
}
}
}
return str;
}

// jwdoncabtsz

ReDiGermany
Автор

Warum nicht per Index of vorgehen?
-maxSubstr=""
- For index->chars in String

---length=charIndex-index
---if(length>maxSubstr){

return maxSubstr

Ist am Handy und ohne Überprüfung geschrieben aber das wäre mein Ansatz

MrSchlorg
Автор

Habs in c++ gelöst,
std::string *s)
{
int head = 0;
int tail = -1;
std::map<char, int> substring_map;
std::string substring = "";

while (head < s->length())
{
//Exists char in map.
if != substring_map.end())
{
auto idx =
// Stop jumps to lower index.
tail = idx < tail ? tail : idx;
}

// Check if the same char come one after another.
if (s->c_str()[head] ==
{
= tail + 1;
}
substring_map.insert({s->c_str()[head], head});
// Check if the new substring is bigger than the pervious one.
auto lenth = substring.length();
if (lenth < (head - tail))
{
substring = "";
// Set new substring.
for (int i = tail + 1; i < head + 1; i++)
{

}
}
head++;
}

return substring;
}

XxaniXable
Автор

Ist es nicht problematisch, dass die anderen Einträge aus dem chars Dictionary nicht gelöscht werden. Ich habe es abgetippt und z. B. bei "srtras" gibt sie "tra" zurück, weil s noch im chars drin ist.

blablabla
Автор

Also ich habe mir deine gelöschten Videos alle heruntergeladen bei Patron jedoch ist kein Bild vorhanden nur deine Stimme sollte das so sein ?

flo_xd
Автор

Was ist ein guter deutscher Kurs um mit Python programmieren zu lernen?

followmelol
Автор

Woher hast du die Aufgaben Stellungen?

florian
Автор

Gibt es eig. auch bücher auf deutsch zu coding interviews? hab auf amazon nichts gefunden

YouKnowWhoIAm
Автор

Habe mal geschaut, was rauskommt, wenn ich die Aufgabe möglichst schnell löse. Daher hier meine naive Variante:

def naiveLongestSubstring(s):
# Naive variant without considering performance.
longest = ""

for start_pos in range(len(s)):
sliced = s[start_pos:]
substring = ""
for c in sliced:
if c in substring:
break
substring += c
if len(substring) > len(longest):
longest = substring

return longest

l = naiveLongestSubstring(

print(l)
print(len(l))

zPiranhaz
Автор

Hallo, ich weiß das Die Frage nicht so ganz zu dem Video passt, aber ich gucke mir gerade deine Kali Linux guides an.
Und ich benutze Linux erst seid heute, und frage mich wie man im Terminal einen "root" startet... Auch wenn manche von euch die Frage vllt. Stupid finden, ich kenne mich noch nicht damit aus :/
Wenn ihr mir helfen könnt gerne einfach antworten :))

small--jojo