面试题:编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ""。(c++实现)

实例说明

示例 1:

输入: ["flower","flow","flight"]
输出: "fl"

示例 2:

输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。

说明:

所有输入只包含小写字母 a-z 。

实现方法:

#include<iostream>
#include<vector>
#include<string>
using namespace std;
string longestCommonPrefix(vector<string>& strs)
{
string re="";
if(strs.empty())
            return re;
if(strs.size()==1)
{
    re+=strs.at(0);
    return re;
}
int jishu=0;
    int arrsize=strs.at(0).size();
    for(int p=1;p<strs.size();p++)
     {
     if(arrsize>strs.at(p).size())
         arrsize=strs.at(p).size();
     }
     for(int k=0,zm=0,jn=0;k<strs.size()-1;k++)
    {    

        while(zm<arrsize&&strs[k][zm]==strs[k+1][zm])
        {
            jn++;
            zm++;
            if(zm>=arrsize)
                break;
        }
        if(k==0)
        jishu=jn;
        else if(jn<jishu)
            jishu=jn;
        zm=0;
        jn=0;
    }

    for(int ff=0;ff<jishu;ff++)
    re+=strs[0][ff];
    return re;
}

int main()
{
//vector<string> str;
//vector<string>::iterator it;
string a[3]={"flower","flow","flight"};
//string a[3]={"dog","racecar","car"};
//string a="a";
vector<string> str;
//str.push_back(a);
//cout<<str.at(0)<<endl;

for(int nn=0;nn<3;nn++)
{
str.push_back(a[nn]);
//cout<<str.at(nn)<<endl;
}
/*
string putstr;
                //用户自定义收到输入vector容器中的string类对象。
while(cin>>putstr)
{
str.push_back(putstr);
}
*/
string bbbb=longestCommonPrefix(str);
cout<<bbbb<<endl;
return 0;
}

原文地址:https://www.cnblogs.com/mydomain/p/9940963.html

时间: 2024-10-07 21:31:31

面试题:编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ""。(c++实现)的相关文章

24、输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。

输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变.  思路:新建一个数组先把原数组中的奇数push进去再把偶数push进去,然后用新数组数据覆盖原数组即可 复杂度O(n),用空间换时间 class Solution { public:     void reOrderArray(vector<int> &array) {         vector<int&

封装一个函数, 查看数字在数组中是否出现过, 如果出现过就返回数字在数组中的位置,没有出现过返回-1;

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <script> //封装一个函数, 查看数字在数组中是否出现过, 如果出现过就返回数字在数组中的位置,没有出现过返回-1; //实例: console.log(indexOf(1, [1, 2, 3, 4, 5])) 返

LeetCode -- 求字符串数组中的最长公共前缀

题目描写叙述: Write a function to find the longest common prefix string amongst an array of strings.就是给定1个字符串数组,找出公共最长前缀. 思路非常直接.使用1个索引来存最长公共前缀的长度就能够了. 注意, 假设使用1个字符串变量来存前缀的话,是不能AC的,由于题目不同意使用额外的空间. public string LongestCommonPrefix(string[] strs) { if(strs

输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。

如果不考虑奇数和奇数,偶数和偶数之间的相对位置不变.那么只需要两个指针分别指向数组的头和尾,依次比较. 1. 如果头指针指向的数组位置为奇数,那么就判断尾指针指向的数组位置的奇偶性.如果是奇数,则头指针后移一个位置,如果是偶数,则尾指针前移一个位置. 2. 如果头指针指向的数组位置为偶数,那么就判断尾指针指向的数组位置的奇偶性.如果是奇数,则交换头尾指针指向的数组元素,如果是偶数,则尾指针前移一个位置. 代码如下: public class Q13_ReOrderArray { public s

查找字符串数组中的最长公共前缀

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" con

一个能将给定非负整数数组中的数字排列成最大数字的函数

最近在网上看到这样一个题目,自己琢磨了一下. java version "1.8.0_40" // 编写一个能将给定非负整数数组中的数字排列成最大数字的函数. // 例如,给定[50,2,1,9],最大数字为95021. public class Sort { public static void main(String args[]){ int number[] = {1,2,3,32,335,34,7,6,9}; int number1[] = {312,321,3354,222,

【C语言】编写一个函数,将一个数字字符串转换成该字符串对应的数字(包括正整数、负整数)

/* 编写一个函数,将一个数字字符串转换成该字符串对应的数字(包括正整数.负整数) 例如:"12" 返回12 "-123" 返回-123 函数原型:int my_atof(char *str) */ #include <stdio.h> int my_atof(char *str) { int flag=0; int m=0; if(*str=='-') { flag=1; str++; } while(*str!='\0') { if(*str<

【c语言】编写一个函数reverse_string(char * string)(递归实现) 实现:将参数字符串中的字符反向排列。

/*编写一个函数reverse_string(char * string)(递归实现) 实现:将参数字符串中的字符反向排列. 要求:不能使用C函数库中的字符串操作函数.*/ #include <stdio.h> #include <assert.h> void reverse_string(char const * string) { assert( string != NULL ); if( *string != '\0' ) { string++; reverse_string

编写一个函数char_contains(char str[],char c), 如果字符串str中包含字符c则返回数值1,否则返回数值0

/* 编写一个函数char_contains(char str[],char c), 如果字符串str中包含字符c则返回数值1,否则返回数值0 */ #include <string.h> #include <stdio.h> // 可读性 -> 性能 -> 精简(重构) int char_contains(char str[], char c); int main() { //int result = char_contains("itc8ast"