#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;

}

C++面试题算法的更多相关文章

  1. 蓝桥杯——试题 算法训练 Yaroslav and Algorithm

    试题 算法训练 Yaroslav and Algorithm 资源限制 时间限制:100ms 内存限制:128.0MB 问题描述 (这道题的数据和SPJ已完工,尽情来虐吧!) Yaroslav喜欢算法 ...

  2. 简答一波 HashMap 常见八股面试题 —— 算法系列(2)

    请点赞,你的点赞对我意义重大,满足下我的虚荣心. Hi,我是小彭.本文已收录到 GitHub · Android-NoteBook 中.这里有 Android 进阶成长知识体系,有志同道合的朋友,关注 ...

  3. JS面试题-算法台阶问题

    有100格台阶,可以跨1步可以跨2步,那么一个有多少种走法: 今天电话面试.遇到一道算法问题,然后瞬间一脸懵逼: 然后机智的我,自作聪明的想到如果一个人每次都走1步,那么最多步,每次走2步最少步:然后 ...

  4. Java数据结构和算法总结-字符串及高频面试题算法

    前言:周末闲来无事,在七月在线上看了看字符串相关算法的讲解视频,收货颇丰,跟着视频讲解简单做了一下笔记,方便以后翻阅复习同时也很乐意分享给大家.什么字符串在算法中有多重要之类的大路边上的客套话就不多说 ...

  5. [ Java面试题 ]算法篇

    1.堆和栈在内存中的区别是什么? 概念: 栈(stack)是为执行线程留出的内存空间.当函数被调用的时候,栈顶为局部变量和一些 bookkeeping 数据预留块.当函数执行完毕,块就没有用了,可能在 ...

  6. Java数据结构和算法总结-字符串相关高频面试题算法

    前言:周末闲来无事,看了看字符串相关算法的讲解视频,收货颇丰,跟着视频讲解简单做了一下笔记,方便以后翻阅复习同时也很乐意分享给大家.什么字符串在算法中有多重要之类的大路边上的客套话就不多说了,直接上笔 ...

  7. 直面Javascript面试题算法思路

    一.字符串遍历类 1.获取符合条件的字符 思路:一般使用正则表达式会比遍历字符串简单.a=str.match(reg),a即为所得. 例子:a.判断字符串是否是这样组成的,第一个必须是字母,后面可以是 ...

  8. 蓝桥杯 试题 算法提高 宰羊 DP解决

    问题描述 炫炫回了内蒙,肯定要吃羊肉啦,所有他家要宰羊吃. 炫炫家有N只羊,羊圈排成一排,标号1~N.炫炫每天吃掉一只羊(这食量!其实是放生啦),吃掉的羊的邻居会以为它被放生了,然后又会告诉他们的邻居 ...

  9. 蓝桥杯——试题 算法训练 Sereja and Squares

    Java 代码 ```` import java.util.Scanner; public class Main { private static long num = 0; private stat ...

随机推荐

  1. 转:Web service是什么?

    作者: 阮一峰 我认为,下一代互联网软件将建立在Web service(也就是"云")的基础上. 我把学习笔记和学习心得,放到网志上,欢迎指正. 今天先写一个最基本的问题,Web ...

  2. html5 spring demo

    <!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8& ...

  3. Standard Attachments in Oracle Form 标准附件

    Standard Attachments in Oracle Form 默认情况下"附件"按钮是灰色的,本文将展示如何让某个Form的附件按钮变亮,并能上传附件. 以用户Form为 ...

  4. Oracle系列之异常处理

    涉及到表的处理请参看原表结构与数据  Oracle建表插数据等等 使用select into语句读取tb_Employee的一行,使用异常处理处理no_data_found和two_many_rows ...

  5. C# winform 渐变效果

    在用到vs的兴奋过程中,想给程序做个启动画面,我采用了显示Aform,过一段时间,隐藏这个Aform,showdialog下一个Bform,closeAForm这个方法来做了,不知道大家有没有跟好的办 ...

  6. iOS添加自定义字体方法

    1:获取字体文件 从各种渠道下载字体文件ttf, 网站或者从别的ipa里扣出来.(以fzltxh.ttf为例) 2:将fzltxh.ttf文件拷贝到工程中 3:在Info.plist中添加项: Fon ...

  7. FZU2224 An exciting GCD problem 区间gcd预处理+树状数组

    分析:(别人写的) 对于所有(l, r)区间,固定右区间,所有(li, r)一共最多只会有log个不同的gcd值, 可以nlogn预处理出所有不同的gcd区间,这样区间是nlogn个,然后对于询问离线 ...

  8. LCD platform_device(s5pv210)

    devs.c:   static struct resource s3cfb_resource[] = { [0] = { .start= S5P_PA_LCD, .end= S5P_PA_LCD + ...

  9. UVA11324 The Largest Clique(DP+缩点)

    题意:给一张有向图G,求一个结点数最大的结点集,使得该结点中任意两个结点 u 和 v满足:要么 u 可以到达 v, 要么 v 可以到达 u(u 和 v 相互可达也可以). 分析:”同一个强连通分量中的 ...

  10. java 小结2 多态问题和容器介绍

    面向对象这个东西,其实我们一直是不是都没有感觉到自己在用,以后我一定要用用.以前学c#时候认真的看过一次,最近一直研究java.随便再看看. 多态问题: 在java中多态分为(1)编译时多态和(2)运 ...