【每日面試題】給定一個字串,求出其最長的重複子串
題目:給定一個字串,求出其最長的重複子串
如字串abcdabcabcd,求的最長重複子串為abcd
程式碼:
void LongChar(char* str)
{
if(str==NULL)
return;
int max=0;
int first=0;
int count=0;
for(int i=1;i<strlen(str);i++)
for(int k=0,j=0;j<strlen(str)-i;j++)
{
if(str[j]==str[i+j])k++;
else
k=0;
if(k>max)
{
max=k;
first=j-k+1;
}
}
if(max>0)
{
cout<<"long:"<<max<<endl;
for(;count<max;count++)
cout<<str[first+count];
cout<<endl;
}
}
int main()
{
char* str="abcdabcabcd";
LongChar(str);
return 0;
}
執行結果:
相關推薦
【每日面試題】給定一個字串,求出其最長的重複子串
題目:給定一個字串,求出其最長的重複子串 如字串abcdabcabcd,求的最長重複子串為abcd 程式碼: void LongChar(char* str) { if(str==NULL) return; int max=0; int first=0; int
給定一個字串,求出其最長的重複子串的長度
題目來源:這是程式設計珠璣上的一道題目 概念 字串的字首和字尾 例如字串 s =“abcdeabc” 則s的字首: “a”,“ab”,“abc”,“abcd”,“abcde”,“abcdea”,“abcdeab”,“abcdeabc”其中除了s
給定一個字串,求出其最長的重複子串
題目:給定一個字串,求出其最長的重複子串 如字串abcdabcabcd,求的最長重複子串為abcd 程式碼: void LongChar(char* str) { if(str==NULL) return; int max=0; &
給定一個字串,找出其所有不重複的排列組合
給一個字串,比如ABC, 把所有的排列,即:ABC, ACB, BAC, BCA, CAB, CBC 都找出來。 解題思路: 對於一個n 位的字串來講,它是n-1位字串的排列 加上 沒有在 n -1 位字串裡 那個字元 的排列。 比如: 對於字串ABC來講,它所有
題目描述:給定一個字串,求出其所有可能的字元組合. 比如:abc 其所有組合是:a,b,c,ab,ac,bc,abc
/* 題目描述:給定一個字串,求出其所有可能的字元組合. 比如:abc 其所有組合是:a,b,c,ab,ac,bc,abc 是遞迴的思想:首先你拿到的是abc,你可以依次打印出去掉c,b,a的組合:ab,ac,bc 然後遞迴用這些子串去調動這個函式,比如ab:依次去掉b,
一個字串A的子串被定義成從A中順次選出若干個字元構成的串。如A=“cdaad" ,順次選1,3,5個字元就構成子串" cad" ,現給定兩個字串,求它們的最長共公子串。 小王對既是素數又是迴文的
一個字串A的子串被定義成從A中順次選出若干個字元構成的串。如A=“cdaad" ,順次選1,3,5個字元就構成子串" cad" ,現給定兩個字串,求它們的最長共公子串。 小王對既是素數又是迴文的數特
【每日面試題】字串萬用字元匹配問題
題目:在一篇英文文章中查詢指定的人名,人名使用二十六個英文字母(可以是大寫或小寫)、空格以及兩個萬用字元組成(*、?),萬用字元“*”表示零個或多個任意字母,萬用字元“?”表示一個任意字母。 如:“J* Smi??” 可以匹配“John Smith” . 請用C語言實現如下
【面試題】實現一個棧,要求Push(入棧),Pop(出棧),Min(返回最小值的操作)的時間複雜度為O(1)
問題描述:實現一個棧,要求Push(入棧),Pop(出棧),Min(返回最小值的操作)的時間複雜度為O(1) 分析問題:要記錄從當前棧頂到棧底元素的最小值,很容易想到用一個變數,每push一個元素更新一次變數的值。那麼問題來了,當執行pop操作時,上一次的最小值就找不到
【每日一題】查詢一個字串中第一個只出現兩次的字元
題目:查詢一個字串中第一個只出現兩次的字元。比如:“abcdefabcdefabc”中第一個只出現兩次為‘d’,要求時間複雜度為O(N),空間複雜度為O(1) 解決方法:可以使用雜湊表統計每個字元出現的次數。因為字元只有256種可能,所以我們可以申請一個25
最新的微軟面試題,題目:求一個字串中連續出現次數最多的子串
題目:求一個字串中連續出現次數最多的子串, 請給出分析和程式碼。給出一個由小寫字母組成的串s和一個不超過s的長度的正整數l,求s所有長度不小於l的字串中在s中不重疊地重複出現次數最多的子串。只要輸出這個子串出現的次數就行了。 特別強調:子串不是子序列,必須是從s截出來連續的
給定一個字串,找出不含有重複字元的最長子串的長度。 示例: 給定 "abcabcbb" ,沒有重複字元的最長子串是 "abc" ,那麼長度就是3。 給定 "bbbbb" ,最長的子串就是 "b
Str = raw_input('plese input Str:') def qiu_chongfu(Str2):#定義判斷字串是否含有重複字元,如有返回0,沒有返回1 biao = 0 for i in range(0,len(Str2)): for j in
給定一個字串,找出不含有重複字元的最長子串的長度。
題目描述: 給定一個字串,找出不含有重複字元的最長子串的長度。 思路1: 依排列組合的所有可能拿到所有子串,依次傳入重複子穿的判斷方法中進行判斷,每次更新出不重複子串的最大長度! 具體程式碼: 1 import java.util.Scanner; 2 3 pu
面試程式設計題1:給定一個字串,統計出每個字母出現次數
不管是自動化測試,還是測試開發,或者高階測試工程師,國內很多公司都開始要求編碼能力。在各種面試中,經常會問到一些程式設計如何實現的問題。本系列,專門記錄一些面試中遇到的問題,主要是用Ja
LeetCode 第3題:給定一個字串,找出不含有重複字元的最長子串的長度。
public class LeetCode3 { public static void main(String[] args) { /** * LeetCode第3題: * 給定一個字串,找出不含有重複字元的最
給定一個字串,找出不含有重複字元的最長子串的長度(javascript)
var lengthOfLongestSubstring = function(s){ var str = '';//存放當前最大無重複項字串 var len = 0;//存放當前當前最大無重複項字串長度 for(var i=0;i<s.length;
求一個字串當中的最長重複子串
#include<stdio.h> #include<string.h> /* 最長重複子串 Longest Repeat Substring */ int maxlen; /* 記錄最長重複子串長度 */ int maxindex;
尋找一個字串中的最長重複子串(字尾陣列)&找出一個字串中最長不重複子串
一、尋找一個字串中的最長重複子串(字尾陣列) 字尾陣列其實可以看尋找一個字串中的最長重複子串(字尾陣列)作一個由字串s倒數i個字元組成的子串的集合,其中0<i<s.length(),例如 字串strstr的字尾陣列為: {r,tr,str,rstr,trstr,
求給定字串中最長重複子串
問題描述: 給定一個字串,如abcdaaabbbaaaabcdbbb,這個串中最長重複子串為abcd;若有多個長度相等的重複子串,只需輸入第一個最長的。 最直觀的演算法設計: 設給定的字串為s=“a1a2a3...an”,則對任意ai,在i+1到n之間查詢aj, s.t.
資料結構——求一個串中出現的第一個最長重複子串
求一個串中出現的第一個最長重複子串。 輸入串:36123459836121234569 求最長重複子串: 原串:36123459836121234569 最長重複子串:12345 關於這個問題有KMP優化,暫時還沒掌握 下面這個演算法在輸入輸出方面還有待優化 #include <
求字串的最長重複子串
int pstrcmp(const void* p,const void* q) { //qsort要用到,按字典序對子字串排序 return strcmp(*(char**)p,*(char**)q); } int comlen(char* p,char* q) {