알고리즘 문제/CodeWar

Consecutive Strings

BEstyle 2022. 9. 22. 12:22

DESCRIPTION:

You are given an array(list) strarr of strings and an integer k. Your task is to return the first longest string consisting of k consecutive strings taken in the array.

Examples:

strarr = ["tree", "foling", "trashy", "blue", "abcdef", "uvwxyz"], k = 2

Concatenate the consecutive strings of strarr by 2, we get:

treefoling   (length 10)  concatenation of strarr[0] and strarr[1]
folingtrashy ("      12)  concatenation of strarr[1] and strarr[2]
trashyblue   ("      10)  concatenation of strarr[2] and strarr[3]
blueabcdef   ("      10)  concatenation of strarr[3] and strarr[4]
abcdefuvwxyz ("      12)  concatenation of strarr[4] and strarr[5]

Two strings are the longest: "folingtrashy" and "abcdefuvwxyz".
The first that came is "folingtrashy" so 
longest_consec(strarr, 2) should return "folingtrashy".

In the same way:
longest_consec(["zone", "abigail", "theta", "form", "libe", "zas", "theta", "abigail"], 2) --> "abigailtheta"

n being the length of the string array, if n = 0 or k > n or k <= 0 return "" (return Nothing in Elm, "nothing" in Erlang).

Note

consecutive strings : follow one after another without an interruption


def longest_consec(alist, k):
    ans=''
    temp=0
    longest=0
    place=0
    alist_len=[]

    if len(alist)==0:
        return ''
    if k<=0:
        return ''
    if k>len(alist):
        return ''

    for i in alist:
        alist_len.append(len(i))

    for i in range(0,len(alist_len)-k+1):
        for j in range(i,i+k):
            temp+=alist_len[j]
        if temp>longest:
            longest=temp
            place=i
        temp=0
    for i in range(place,place+k):
        ans+=alist[i]
    return (ans)