Longest substrings without repeating characters: Difference between revisions

Added solution for Action!
(add FreeBASIC)
(Added solution for Action!)
Line 39:
=> []
[1, 2, 3, 4, 1, 2, 5, 6, 1, 7, 8, 1, 0] => [[3, 4, 1, 2, 5, 6], [2, 5, 6, 1, 7, 8]]
</pre>
 
=={{header|Action!}}==
<lang Action!>BYTE FUNC GetLength(CHAR ARRAY s BYTE start)
BYTE ARRAY tab(256)
BYTE i
CHAR c
 
Zero(tab,256)
i=start
WHILE i<=s(0)
DO
c=s(i)
tab(c)==+1
IF tab(c)>1 THEN
EXIT
FI
i==+1
OD
RETURN (i-start)
 
PROC LongestSubstrings(CHAR ARRAY s)
CHAR ARRAY tmp(256)
BYTE count,maxLen,i,len
 
IF s(0)=0 THEN
RETURN
FI
 
i=1 maxLen=0
FOR i=1 TO s(0)
DO
len=GetLength(s,i)
IF len>maxLen THEN
maxLen=len
FI
OD
 
count=0
FOR i=1 TO s(0)
DO
len=GetLength(s,i)
IF len=maxLen THEN
IF count>0 THEN
Print(", ")
FI
SCopyS(tmp,s,i,i+maxlen-1)
PrintF("""%S""",tmp)
count==+1
FI
OD
RETURN
 
PROC Test(CHAR ARRAY s)
PrintF("Input: ""%S""%E",s)
Print("Result: [")
LongestSubstrings(s)
PrintE("]") PutE()
RETURN
 
PROC Main()
Test("xyzyabcybdfd")
Test("xyzyab")
Test("zzzzz")
Test("a")
Test("thisisastringtest")
Test("")
RETURN</lang>
{{out}}
[https://gitlab.com/amarok8bit/action-rosetta-code/-/raw/master/images/Longest_substrings_without_repeating_characters.png Screenshot from Atari 8-bit computer]
<pre>
Input: "xyzyabcybdfd"
Result: ["zyabc", "cybdf"]
 
Input: "xyzyab"
Result: ["zyab"]
 
Input: "zzzzz"
Result: ["z", "z", "z", "z", "z"]
 
Input: "a"
Result: ["a"]
 
Input: "thisisastringtest"
Result: ["astring", "ringtes"]
 
Input: ""
Result: []
</pre>
 
Anonymous user