最长公共前缀匹配|集-6

给定一组字符串,找到最长的公共前缀。 例如:

null
Input: str[] = {geeksforgeeks, geeks, geek, geezer}Output: geeInput: str[] = {apple, ape, april}Output: ap

以前的做法: Set1 | Set2 | Set3 | Set4 | Set5 方法:

  • 对给定的N个字符串进行排序。
  • 比较排序字符串数组中的第一个字符串和最后一个字符串。
  • 第一个和最后一个字符串中前缀字符匹配的字符串将是答案。

以下是上述方法的实施情况:

C++

// A C++ Program to find the longest common prefix
#include <bits/stdc++.h>
using namespace std;
// A Utility Function to find the common prefix between
// first and last strings
string commonPrefixUtil(string str1, string str2)
{
string result;
int n1 = str1.length(), n2 = str2.length();
// Compare str1 and str2
for ( int i = 0, j = 0; i <= n1 - 1 && j <= n2 - 1; i++, j++) {
if (str1[i] != str2[j])
break ;
result.push_back(str1[i]);
}
return (result);
}
// A Function that returns the longest common prefix
// from the array of strings
void commonPrefix(string arr[], int n)
{
// sorts the N set of strings
sort(arr, arr + n);
// prints the common prefix of the first and the
// last string of the set of strings
cout << commonPrefixUtil(arr[0], arr[n - 1]);
}
// Driver Code
int main()
{
string arr[] = { "geeksforgeeks" , "geeks" ,
"geek" , "geezer" };
int n = sizeof (arr) / sizeof (arr[0]);
commonPrefix(arr, n);
return 0;
}


JAVA

// A Java program to find the longest common prefix
import java.util.Arrays;
class GFG {
// A Utility Function to find the common prefix between
// first and last strings
static String commonPrefixUtil(String str1, String str2) {
String result = "" ;
int n1 = str1.length(), n2 = str2.length();
// Compare str1 and str2
for ( int i = 0 , j = 0 ; i <= n1 - 1 && j <= n2 - 1 ; i++, j++) {
if (str1.charAt(i) != str2.charAt(j)) {
break ;
}
result += str1.charAt(i);
}
return (result);
}
// A Function that returns the longest common prefix
// from the array of strings
static void commonPrefix(String arr[], int n) {
// sorts the N set of strings
Arrays.sort(arr);
// prints the common prefix of the first and the
// last String of the set of strings
System.out.println(commonPrefixUtil(arr[ 0 ], arr[n - 1 ]));
}
// Driver Code
public static void main(String[] args) {
String arr[] = { "geeksforgeeks" , "geeks" ,
"geek" , "geezer" };
int n = arr.length;
commonPrefix(arr, n);
}
}
/* This JAVA code is contributed by 29AjayKumar*/


Python3

# A Python 3 Program to find the
# longest common prefix
# A Utility Function to find the common
# prefix between first and last strings
def commonPrefixUtil(str1, str2):
n1 = len (str1)
n2 = len (str2)
result = ""
# Compare str1 and str2
j = 0
i = 0
while (i < = n1 - 1 and j < = n2 - 1 ):
if (str1[i] ! = str2[j]):
break
result + = (str1[i])
i + = 1
j + = 1
return (result)
# A Function that returns the longest
# common prefix from the array of strings
def commonPrefix(arr, n):
# sorts the N set of strings
arr.sort(reverse = False )
# prints the common prefix of the first
# and the last string of the set of strings
print (commonPrefixUtil(arr[ 0 ], arr[n - 1 ]))
# Driver Code
if __name__ = = '__main__' :
arr = [ "geeksforgeeks" , "geeks" ,
"geek" , "geezer" ]
n = len (arr)
commonPrefix(arr, n)
# This code is contributed by
# Sanjit_Prasad


C#

// C# Program to find the longest
// common prefix
using System;
class GFG
{
// A Utility Function to find the common
// prefix between first and last strings
static String commonPrefixUtil(String str1,
String str2)
{
string result = "" ;
int n1 = str1.Length, n2 = str2.Length;
// Compare str1 and str2
for ( int i = 0, j = 0;
i <= n1 - 1 && j <= n2 - 1; i++, j++)
{
if (str1[i] != str2[j])
break ;
result += (str1[i]);
}
return (result);
}
// A Function that returns the longest
// common prefix from the array of strings
static void commonPrefix(String []arr, int n)
{
// sorts the N set of strings
Array.Sort(arr);
// prints the common prefix of the first
// and the last String of the set of strings
Console.Write(commonPrefixUtil(arr[0],
arr[n - 1]));
}
// Driver Code
public static void Main()
{
String []arr = { "geeksforgeeks" , "geeks" ,
"geek" , "geezer" };
int n = arr.Length;
commonPrefix(arr, n);
}
}
// This code is contributed by 29AjayKumar


PHP

<?php
// A PHP Program to find the longest
// common prefix
// A Utility Function to find the common
// prefix between first and last strings
function commonPrefixUtil( $str1 , $str2 )
{
$result = "" ;
$n1 = strlen ( $str1 );
$n2 = strlen ( $str2 );
// Compare str1 and str2
for ( $i = 0, $j = 0; $i <= $n1 - 1 &&
$j <= $n2 - 1; $i ++, $j ++)
{
if ( $str1 [ $i ] != $str2 [ $j ])
break ;
$result = $result . $str1 [ $i ];
}
return ( $result );
}
// A Function that returns the longest
// common prefix from the array of strings
function commonPrefix(& $arr , $n )
{
// sorts the N set of strings
sort( $arr );
// prints the common prefix of the first
// and the last string of the set of strings
echo commonPrefixUtil( $arr [0], $arr [ $n - 1]);
}
// Driver Code
$arr = array ( "geeksforgeeks" , "geeks" ,
"geek" , "geezer" );
$n = sizeof( $arr );
commonPrefix( $arr , $n );
// This code is contributed by ita_c
?>


Javascript

<script>
// A Javascript program to find the longest common prefix
// A Utility Function to find the common prefix between
// first and last strings
function commonPrefixUtil(str1,str2)
{
let result = "" ;
let n1 = str1.length, n2 = str2.length;
// Compare str1 and str2
for (let i = 0, j = 0; i <= n1 - 1 && j <= n2 - 1; i++, j++) {
if (str1[i] != str2[j]) {
break ;
}
result += str1[i];
}
return (result);
}
// A Function that returns the longest common prefix
// from the array of strings
function commonPrefix(arr,n)
{
// sorts the N set of strings
arr.sort();
// prints the common prefix of the first and the
// last String of the set of strings
document.write(commonPrefixUtil(arr[0], arr[n - 1])+ "<br>" );
}
// Driver Code
let arr=[ "geeksforgeeks" , "geeks" ,
"geek" , "geezer" ];
let n = arr.length;
commonPrefix(arr, n);
// This code is contributed by avanitrachhadiya2155
</script>


输出:

gee

时间复杂性: O(N*logn)

© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享