#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++面试题算法的更多相关文章
-
蓝桥杯——试题 算法训练 Yaroslav and Algorithm
试题 算法训练 Yaroslav and Algorithm 资源限制 时间限制:100ms 内存限制:128.0MB 问题描述 (这道题的数据和SPJ已完工,尽情来虐吧!) Yaroslav喜欢算法 ...
-
JS面试题-算法台阶问题
有100格台阶,可以跨1步可以跨2步,那么一个有多少种走法: 今天电话面试.遇到一道算法问题,然后瞬间一脸懵逼: 然后机智的我,自作聪明的想到如果一个人每次都走1步,那么最多步,每次走2步最少步:然后 ...
-
Java数据结构和算法总结-字符串及高频面试题算法
前言:周末闲来无事,在七月在线上看了看字符串相关算法的讲解视频,收货颇丰,跟着视频讲解简单做了一下笔记,方便以后翻阅复习同时也很乐意分享给大家.什么字符串在算法中有多重要之类的大路边上的客套话就不多说 ...
-
[ Java面试题 ]算法篇
1.堆和栈在内存中的区别是什么? 概念: 栈(stack)是为执行线程留出的内存空间.当函数被调用的时候,栈顶为局部变量和一些 bookkeeping 数据预留块.当函数执行完毕,块就没有用了,可能在 ...
-
Java数据结构和算法总结-字符串相关高频面试题算法
前言:周末闲来无事,看了看字符串相关算法的讲解视频,收货颇丰,跟着视频讲解简单做了一下笔记,方便以后翻阅复习同时也很乐意分享给大家.什么字符串在算法中有多重要之类的大路边上的客套话就不多说了,直接上笔 ...
-
直面Javascript面试题算法思路
一.字符串遍历类 1.获取符合条件的字符 思路:一般使用正则表达式会比遍历字符串简单.a=str.match(reg),a即为所得. 例子:a.判断字符串是否是这样组成的,第一个必须是字母,后面可以是 ...
-
蓝桥杯 试题 算法提高 宰羊 DP解决
问题描述 炫炫回了内蒙,肯定要吃羊肉啦,所有他家要宰羊吃. 炫炫家有N只羊,羊圈排成一排,标号1~N.炫炫每天吃掉一只羊(这食量!其实是放生啦),吃掉的羊的邻居会以为它被放生了,然后又会告诉他们的邻居 ...
-
蓝桥杯——试题 算法训练 Sereja and Squares
Java 代码 ```` import java.util.Scanner; public class Main { private static long num = 0; private stat ...
-
试题 算法训练 二进制数数 java解题
资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 给定L,R.统计[L,R]区间内的所有数在二进制下包含的"1"的个数之和. 如5的二进制为101,包含2个&q ...
随机推荐
-
centos配置epel
1.下载epel wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm 2.安装epel rpm -iv ...
-
做fzu oj 1045 做减法学到的sprintf()函数
题目 做题一直输不出答案,于是就上网去百度了这题的解题,发现解答十分的简短,而且其中我看见了平时没见过的函数,sprintf(). 于是就百度sprintf()的使用. 如下: 函数功能:把格式化的数 ...
-
绑定线程到特定CPU处理器
参考这篇文章 http://blog.chinaunix.net/uid-27761170-id-5050258.html 代码如下: #define _GNU_SOURCE #include < ...
-
百度云推送----iOS
前言 记录一下这几天学习的百度推送,觉得这个东西弄的还挺糟心的,好多注意的地方 正文 1.先申请一个百度开发者账号 http://push.baidu.com/fc 2.创建一个新应用,并应用配置 3 ...
-
RxVolley使用文档 —— RxVolley = Volley + RxJava + OkHttp
RxVolley使用文档 -- RxVolley = Volley + RxJava + OkHttp 偶然有幸,看到这个框架,便深深的爱上了这个框架,赶紧转载一发到自己的博客上温故而知新,而且作者一 ...
-
iperf使用指南
注意:iperf板上版本和PC上版本要一致,至少都要是2或者3,不能一个是2,一个是3. You also get a "connection refused" error whe ...
-
程序设计实践 (Brian W. Kernighan Rob Pike 著)
第1章 风格 1.1 名字 1.2 表达式和语句 1.3 一致性和习惯用法 1.4 函数宏 1.5 神秘的数 1.6 注释 1.7 为何如此费心 第2章 算法与数据结构 2.1 检索 2.2 排序 2 ...
- Python函数式编程-高阶函数、匿名函数、装饰器、偏函数
-
Learning to Rank:Point-wise、Pair-wise 和 List-wise区别
机器学习的 ranking 技术——learning2rank,包括 pointwise.pairwise.listwise 三大类型. [Ref-1]给出的: <Point wise rank ...
-
error TRK0002: Microsoft Visual Studio 10.0\VC\bin\link.exe Access is denied.
When you compile project, visual studio 2010 prompts “…link.exe … Access is denied” This below is I ...