logo

מרחק פטיש בין שני מיתרים

ניתנות לך שתי מחרוזות באורך שווה, עליך למצוא את מרחק הפטיש בין המחרוזת הללו. 
כאשר מרחק ההאמינג בין שתי מיתרים באורך שווה הוא מספר המיקומים שבהם התו המתאים שונה. 

דוגמאות: 

Input : str1[] = 'geeksforgeeks' str2[] = 'geeksandgeeks' Output : 3 Explanation : The corresponding character mismatch are highlighted. 'geeks  for  geeks' and 'geeks  and  geeks' Input : str1[] = '1011101' str2[] = '1001001' Output : 2 Explanation : The corresponding character mismatch are highlighted. '10  1  1  1  01' and '10  0  1  0  01'

ניתן לפתור בעיה זו בגישה פשוטה שבה אנו חוצים את המיתרים וסופרים את אי ההתאמה במיקום המתאים. הצורה המורחבת של בעיה זו היא ערוך מרחק.



אלגוריתם: 

int hammingDist(char str1[] char str2[]) { int i = 0 count = 0; while(str1[i]!='') { if (str1[i] != str2[i]) count++; i++; } return count; }

להלן היישום של שתי מחרוזות. 

C++
// C++ program to find hamming distance b/w two string #include    using namespace std; // function to calculate Hamming distance int hammingDist(string str1 string str2) {  int i = 0 count = 0;  while (str1[i] != '') {  if (str1[i] != str2[i])  count++;  i++;  }  return count; } // driver code int main() {  string str1 = 'geekspractice';  string str2 = 'nerdspractise';  // function call  cout << hammingDist(str1 str2);  return 0; } // This code is contributed by Sania Kumari Gupta (kriSania804) 
C
// C program to find hamming distance b/w two string #include  // function to calculate Hamming distance int hammingDist(char* str1 char* str2) {  int i = 0 count = 0;  while (str1[i] != '') {  if (str1[i] != str2[i])  count++;  i++;  }  return count; } // driver code int main() {  char str1[] = 'geekspractice';  char str2[] = 'nerdspractise';  // function call  printf('%d' hammingDist(str1 str2));  return 0; } // This code is contributed by Sania Kumari Gupta // (kriSania804) 
Java
// Java program to find hamming distance b/w two string class GFG {  // function to calculate Hamming distance  static int hammingDist(String str1 String str2)  {  int i = 0 count = 0;  while (i < str1.length()) {  if (str1.charAt(i) != str2.charAt(i))  count++;  i++;  }  return count;  }  // Driver code  public static void main(String[] args)  {  String str1 = 'geekspractice';  String str2 = 'nerdspractise';  // function call  System.out.println(hammingDist(str1 str2));  } } // This code is contributed by Sania Kumari Gupta // (kriSania804) 
Python3
# Python3 program to find  # hamming distance b/w two  # string  # Function to calculate # Hamming distance  def hammingDist(str1 str2): i = 0 count = 0 while(i < len(str1)): if(str1[i] != str2[i]): count += 1 i += 1 return count # Driver code  str1 = 'geekspractice' str2 = 'nerdspractise' # function call  print(hammingDist(str1 str2)) # This code is contributed by avanitrachhadiya2155 
C#
// C# program to find hamming  // distance b/w two string using System; class GFG {   // function to calculate  // Hamming distance static int hammingDist(String str1   String str2) {  int i = 0 count = 0;  while (i < str1.Length)  {  if (str1[i] != str2[i])  count++;  i++;  }  return count; }  // Driver code  public static void Main () {  String str1 = 'geekspractice';  String str2 = 'nerdspractise';  // function call  Console.Write(hammingDist(str1 str2)); } } // This code is contributed by nitin mittal 
PHP
 // PHP program to find hamming distance b/w  // two string // function to calculate // Hamming distance function hammingDist($str1 $str2) { $i = 0; $count = 0; while (isset($str1[$i]) != '') { if ($str1[$i] != $str2[$i]) $count++; $i++; } return $count; } // Driver Code $str1 = 'geekspractice'; $str2 = 'nerdspractise'; // function call echo hammingDist ($str1 $str2); // This code is contributed by nitin mittal. ?> 
JavaScript
<script> // JavaScript program to find hamming distance b/w // two string // function to calculate Hamming distance function hammingDist(str1 str2) {  let i = 0 count = 0;  while (i < str1.length)  {  if (str1[i] != str2[i])  count++;  i++;  }  return count; } // driver code  let str1 = 'geekspractice';  let str2 = 'nerdspractise';  // function call  document.write(hammingDist (str1 str2)); // This code is contributed by Manoj. </script> 

תְפוּקָה
4

מורכבות זמן: O(n)

פֶּתֶק: עבור מרחק Hamming של שני מספרים בינאריים אנו יכולים פשוט להחזיר ספירה של סיביות סט ב-XOR של שני מספרים.

צור חידון