[プログラマー/Python]レベル2ニュースクラスタ



問題を解く


エラーコード
import math 

def solution(str1, str2):
    str1=str1.lower()
    str2=str2.lower()
    
    def make(string):
        string_array=[]
        word_cnt=0
        temp=""
        for i in range(len(string)):
            temp+=string[i]
            word_cnt+=1
            if word_cnt==2:
                if temp.isalpha()==True:
                    string_array.append(temp)
                word_cnt=1
                temp=temp[-1]
            else:
                continue
        return string_array
    
    str1_array=make(str1)
    str2_array=make(str2)
    print(str1_array)
    print(str2_array)
    
    a=[]
    b=[]
    def make2(m,n):
        for i in m:
            if i not in b:
                if i in n:
                    min_num=min(m.count(i),n.count(i))
                    max_num=max(m.count(i),n.count(i))
                    for k in range(min_num):
                        a.append(i)
                    for k in range(max_num):
                        b.append(i)
                else:
                    b.append(i)
                    
    make2(str1_array,str2_array)
    make2(str2_array,str1_array)
    print(a,b)
    
    if len(a)==0 and len(b)==0:
        result=1
    else:
        result=len(a)/len(b)
        
    return math.trunc(result*65536)
TEKE 7,9,10,11で間違いました.
コードのlist 1={1,2,4,4}に対してlist 2={4,4,5,6,7,8}
コレクションには2つの8が含まれるはずですが、8に入るとスキップされ、計算エラーが発生します.
ex) "AAbbaa_AA", "BBB"
make関数は、文字列を2文字中断することによって複数のセットを作成する関数です.
str1_array=['aa', 'ab', 'bb', 'ba', 'aa', 'aa']
str2_array=['bb', 'bb']
アルファベット以外の文字を含む要素は含まれません.
そして、各要素がこのリストにのみ存在する場合には、その要素を小集合bに追加し、2つのリストに含まれる場合には、小要素が重複する複数の集合の拡張を許容することにより、小交差a、最大交差bに追加する.
a=['bb']
b=['aa', 'ab', 'bb', 'bb', 'ba', 'aa', 'aa']

ソースコード

def solution(str1, str2):
    str1=str1.lower()
    str2=str2.lower()
    
    def make(string):
        string_array=[]
        word_cnt=0
        temp=""
        for i in range(len(string)):
            temp+=string[i]
            word_cnt+=1
            if word_cnt==2:
                if temp.isalpha()==True:
                    string_array.append(temp)
                word_cnt=1
                temp=temp[-1]
            else:
                continue
        return string_array
    
    str1_array=make(str1)
    str2_array=make(str2)

    a=[]
    b=[]
    for i in str1_array:
        if i not in str2_array:
            b.append(i)
        elif i not in a:
            min_num=min(str1_array.count(i),str2_array.count(i))
            max_num=max(str1_array.count(i),str2_array.count(i))
            for k in range(min_num):
                a.append(i)
            for k in range(max_num):
                b.append(i)
    
    for i in str2_array:
        if i not in str1_array:
            b.append(i)
                
    if len(a)==0 and len(b)==0:
        result=1
    else:
        result=len(a)/len(b)
        
    return int(result*65536)