C++面试题算法

简介: #include #include using namespace std ; /* 题目:给一个字符串、例如 “ababc”要求返回“ab”. 因为“ab”连续重复出现且最长。 用C/C++语言写一函数完成该算法,给出复杂度 这道题的最终目的是找到最长的连续字符串 *...

#include <iostream>
#include <string>
using namespace std ;
/*
题目:给一个字符串、例如 “ababc”要求返回“ab”. 因为“ab”连续重复出现且最长。
用C/C++语言写一函数完成该算法,给出复杂度
这道题的最终目的是找到最长的连续字符串
*/
struct SubStringInfo
{
 int maxSubStrLength ;//最长字符串的长度
 string str ;//最长字符串
}strData;
bool Check(string &str,string substr) //检测某字符串是否连续
{
 int pre ; //前串
 int next;//后串
 if(str.length()==substr.length())
  return false ;
 pre=str.find(substr);  //查找字符串出现的位置
 if(pre==-1) return false; //如果找不到那么返回 string::npos到头  -1
 next=str.find(substr,pre+substr.length());
 if(next==pre+substr.length())
  return true ; 
 return false;
}
void SearchString(SubStringInfo &info,string &str)
{
 int len=str.length() ;//获取string长度 
 string  eachMaxString="";
 string  tem="";
 bool ret=false ;
 int index=0 ;
 for(int i=1;i<=len;i++)  //每个子串长度
 {  
  index=0;
  cout<<"Sub String Length:"<<i<<": "<<endl ;
  for(int j=len-i+1;j>0;j--)//该长度的子字符串有多少个
  {    
   tem=str.substr(index,i);//获取子字符串
   cout<<"index="<<index<<" "<<"i="<<i<<" "<<tem<<" " ;
   index++;
   ret=Check(str,tem) ;//检测
   if(ret)
   {  
    if(tem.length()>info.maxSubStrLength)
    {
     info.maxSubStrLength=tem.length() ;//保存长度
     info.str=tem ;
    }
   } 
  }
  cout<<"\n";
 }
}
void main()
{    
    strData.maxSubStrLength=0;  //初始化结构体
 strData.str="";
 string  str ;  //接受要输入的字符串 
 cout<<"输入字符串:"<<endl ;
 cin>>str ;    
 SearchString(strData,str) ;//搜索字符串
 cout<<"最长的连续字符串为:"<<strData.str<<endl;
}

 

目录
相关文章
|
9天前
|
机器学习/深度学习 安全 算法
【图论】【割点】【C++算法】928. 尽量减少恶意软件的传播 II
【图论】【割点】【C++算法】928. 尽量减少恶意软件的传播 II
|
24天前
|
存储 算法 Serverless
【C/C++ 数据结构】深入探索数据结构中算法复杂度:从C++和数学的视角
【C/C++ 数据结构】深入探索数据结构中算法复杂度:从C++和数学的视角
46 0
|
24天前
|
存储 算法 数据管理
【C/C++ 基础算法】 C/C++ 位图算法的使用
【C/C++ 基础算法】 C/C++ 位图算法的使用
32 0
|
10天前
|
负载均衡 算法 应用服务中间件
面试题:Nginx有哪些负载均衡算法?Nginx位于七层网络结构中的哪一层?
字节跳动面试题:Nginx有哪些负载均衡算法?Nginx位于七层网络结构中的哪一层?
28 0
|
24天前
|
缓存 算法 C语言
【C++ 标准查找算法 】C++标准库查找算法深入解析(In-depth Analysis of C++ Standard Library Search Algorithms)
【C++ 标准查找算法 】C++标准库查找算法深入解析(In-depth Analysis of C++ Standard Library Search Algorithms)
45 0
|
9天前
|
算法 测试技术 C#
【广度优先搜索】【堆】【C++算法】407. 接雨水 II
【广度优先搜索】【堆】【C++算法】407. 接雨水 II
|
9天前
|
算法 测试技术 Serverless
【二分查找】【C++算法】378. 有序矩阵中第 K 小的元素
【二分查找】【C++算法】378. 有序矩阵中第 K 小的元素
|
9天前
|
算法 测试技术 C#
【字典树】【KMP】【C++算法】3045统计前后缀下标对 II
【字典树】【KMP】【C++算法】3045统计前后缀下标对 II
|
24天前
|
敏捷开发 安全 API
C/C++ 工程师面试:如何精彩展示你的项目经验并获得高分
C/C++ 工程师面试:如何精彩展示你的项目经验并获得高分
71 0
|
25天前
|
存储 算法 搜索推荐
【C++ 数据结构与算法 一站式备考指南】一文掌握 数据结构与算法课程 知识点(二)
【C++ 数据结构与算法 一站式备考指南】一文掌握 数据结构与算法课程 知识点
91 2

热门文章

最新文章