2012-10-05 135 views
0

我正在尋找一種感覺。 我有兩個字符串,我需要相互比較一個並獲得唯一性百分比。比較兩個字符串以獲得唯一性百分比

例如:

{ 
String A = "Hello" 
String B = "Hello" 
Uniqueness percent = 0% 
} 

{ 
String A = "Hello friend" 
String B = "Hello mate" 
Uniqueness percent = 50% 
} 

{ 
String A = "Hey" 
String B = "Hello" 
Uniqueness percent = 100% 
} 
+1

那麼在兩個字符串中,但在另一個位置存在什麼字?那麼在一個字符串中出現不止一次的字呢? – fvu

+3

唯一性標準是什麼?如果它的「你好朋友」vs「好的,你好,先生?」你是否用言語分裂?標點符號怎麼樣? – Stegrex

+2

正如其他人所暗示的,在開始編寫代碼之前,理解和驗證需求,然後設計算法總是很重要的。在你的職業生涯中,進入這種習慣會爲你節省不可思議的時間。 –

回答

0

您可以使用similar_text()

similar_text($string1,$string2,$percentage); 
echo $percentage; 

http://www.php.net/manual/en/function.similar-text.php

如果您正在尋找性能的關鍵解決方案,那麼你需要使用優化算法(在大多數情況下,這是一個很好的解決方案)。

1

在這裏,你走了,這個代碼是基於similar_text()PHP函數,我可以看到它用字母比較字符串不完整的單詞,看看例子:

<?php 

    if(isset($_REQUEST["str_a"]) && isset($_REQUEST["str_b"])) { 

     $str_a = $_REQUEST["str_a"];  
     $str_b = $_REQUEST["str_b"];  

     function compare_them($str_1, $str_2) { 

      $str_1 = trim(strtolower($str_1)); 
      $str_2 = trim(strtolower($str_2)); 

      similar_text($str_1, $str_2, $percentage); 

      $formated_percents = number_format($percentage); 

      return $formated_percents; 

     } 

     $calculated = compare_them($str_a, $str_b); 

    } 


?> 

<form action="" method="get"> 

    string a: <input type="text" value="" name="str_a" /> 
    <br /> 
    string b: <input type="text" value="" name="str_b" /> 
    <br /> 
    <br /> 
    <input type="submit" value="submit" /> 

</form> 

<h2> 
<?php 

    if(isset($_REQUEST["str_a"]) && isset($_REQUEST["str_b"])) { 

     print "string a = " . $str_a . " <br />string b = " . $str_b . " <br />percents match = " . $calculated . "%"; 

    } 

?> 
</h2> 

這裏是活生生的例子:
http://simplestudio.rs/yard/percent/percent.php