2016-08-29 9 views
-1

CMakeを使用して2つの文字列の最大共通接頭辞を見つける必要があります。私はまだCMakeを使って何も見つけられませんでした。 CMake自体は非常に限られているので、私は最高のアプローチについて疑問に思います。CMakeの2つの文字列の最大共通接頭辞

答えて

0

最も一般的な接頭辞の検索は、通常、両方の文字列の先頭から始まるO(n)線形検索で行われます。 CMakeは数字と文字列をif commandとLESS/GREATER/..を使って比較することができます。これにより、最大の共通プレフィックスを見つける標準的な方法を実装できます。

function(largest_common_prefix a b prefix) 

# minimum of lengths of both strings 
string(LENGTH ${a} len_a) 
string(LENGTH ${a} len_b) 

if(${len_a} LESS ${len_b}) 
    set(len ${len_a}) 
else() 
    set(len ${len_b}) 
endif() 

# iterate over the length 
foreach(end RANGE 1 ${len}) 
    # get substrings 
    string(SUBSTRING ${a} 0 ${end} sub_a) 
    string(SUBSTRING ${b} 0 ${end} sub_b) 

    # if equal store, otherwise break 
    if (${sub_a} STREQUAL ${sub_b}) 
     set(${prefix} ${sub_a} PARENT_SCOPE) 
    else() 
     break() 
    endif() 
endforeach() 

endfunction() 
関連する問題