一组字符串的最大公共前缀

Longest Common Prefix(找出所有字符串的最长公共前缀):

Write a function to find the longest commonprefix string amongst an array of strings.

Subscribe to see which companies asked thisquestion.

例如:ABCDC ABDFRE ABCJFJ ABCJKY AB 最大公共前缀为:AB

 

/*
File name:一组字符串最大公共前缀.cpp
Author:杨柳
Date:2017/5/11
IDE:DEV-c++ 
*/
#include<stdio.h>
#include<string.h>
#include<iostream>
#define M 20
using namespace std;
int len=0,count=0;
class Solution { 
public:
 	string LongestCommonPrefix(string str1,string str2 ){ //求两个字符串的最大公共前缀 
		string prefix=""; //设初始值为空 
		char a[100],b[100];
		strncpy(b,str2.c_str(),str2.length());//字符串str2转换成字符数组保存在a[]数组中 
		for(int i = 0; i < str1.length();i++) { 
			strncpy(a,str1.c_str(),str1.length()); //字符串str1转换成字符数组保存在b[]数组中 
			//	strcpy(a,s);
		   	if(a[i]!=b[i])//若第i位不相等,跳出循环 
		       break;
		 	else
		 	   prefix+=a[i];//相等的字符加入到字符串prefix中 
				}
	 return prefix; 
		} 
}  ;

int main(){

	Solution  sl;
	string strs[M];//一组字符串数组 
	string str;
	cout<<"请输入一个组字符串数组的个数:"<<endl;
	cin>>len;
	cout<<"请输入一个组字符串数组:"<<endl;
	for(int i=0;i<len;i++) {
		cin>>strs[i];
	}

	str=strs[0];
	for(int i=len-1;i>0;i--){	//调用求两个字符串前缀的函数,将结果作为新的参数,不断调用函数,直到求出最终结果 
	str=sl.LongestCommonPrefix(strs[i],str);
	cout<<"调用过程显示"<<endl<<str<<endl;
}
   	cout<<endl<<"这组字符串的最长公共前缀为:"<<endl; 
    cout<<str<<endl;
    return 0; 
}

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值