#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. codeigniter 分页类练习

    controller page页: <?php class Blog extends CI_Controller{ public function __construct(){ parent:: ...

  2. C# ASP.NET FILEUPLOAD详解

    显示一个文本框控件和一个浏览按钮,使用户可以选择要上载到服务器的文件. 命名空间: System.Web.UI.WebControls 程序集: System.Web(在 system.web.dll ...

  3. Subline Text快捷键

    我经常使用的快捷键 Ctrl+A: 全选Ctrl+C: 复制 重复工作必备: Ctrl+D:选择单词,重复可增加选择下一个相同的单词Alt+F3:选择所有相同的词F3: 下一个Shift+F3:前一个 ...

  4. 安装db2 提示不是有效的win32应用程序?

    问题已经解决了,就是版本的问题.我在官网上下载的最新版本(10.5),网上说是最新的版本不支持xp系统,完了我下了9.7的版本,安装没有一点点问题

  5. Html——footer的使用

    html部分 <div class="container"> <div class="body"></div> <di ...

  6. breakpoints、lldb 和 chisel 的使用

    http://www.cocoachina.com/ios/20150803/12805.html Breakpoints BreakPoint分类 breakpoint也是有分类的,我这里的文章内大 ...

  7. 关于开源框架GPUImage 的简单说明

    GPUImage是一个非常棒的图像处理的开源库,里面提供了非常非常多的滤镜效果来加工图片. 不过就是因为太多效果了,而且对于程序员来说,那么多效果并不清楚知道要用那一个.于是我就使用提供的默认值,加上 ...

  8. .Net 垃圾回收机制原理(一)

    英文原文:Jeffrey Richter 编译:赵玉开 链接:http://www.cnblogs.com/yukaizhao/archive/2011/11/23/dot_net_GC_1.html ...

  9. WeiXinMPSDK-微信C# SDK

    微信C# SDK 微信公众号:Senparc.Weixin.MP.dll 微信企业号:Senparc.Weixin.QY.dl 微信开放平台:Senparc.Weixin.Open.dll 本库为.N ...

  10. LightOJ 1074 Extended Traffic SPFA 消负环

    分析:一看就是求最短路,然后用dij,果断错了一发,发现是3次方,有可能会出现负环 然后用spfa判负环,然后标记负环所有可达的点,被标记的点答案都是“?” #include<cstdio> ...