Longest substrings without repeating characters: Difference between revisions
Content added Content deleted
(add FreeBASIC) |
(Added solution for Action!) |
||
Line 39: | 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]] |
[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> |
</pre> |
||