kuangbin專題十六 KMP擴展KMP HDU2594 Simpsons’ Hidden Talents

Homer: Marge, I just figured out a way to discover some of the talents we weren’t aware we had.
Marge: Yeah, what is it?
Homer: Take me for example. I want to find out if I have a talent in politics, OK?
Marge: OK.
Homer: So I take some politician’s name, say Clinton, and try to find the length of the longest prefix
in Clinton’s name that is a suffix in my name. That’s how close I am to being a politician like Clinton
Marge: Why on earth choose the longest prefix that is a suffix???
Homer: Well, our talents are deeply hidden within ourselves, Marge.
Marge: So how close are you?
Homer: 0!
Marge: I’m not surprised.
Homer: But you know, you must have some real math talent hidden deep in you.
Marge: How come?
Homer: Riemann and Marjorie gives 3!!!
Marge: Who the heck is Riemann?
Homer: Never mind.
Write a program that, when given strings s1 and s2, finds the longest prefix of s1 that is a suffix of s2.

InputInput consists of two lines. The first line contains s1 and the second line contains s2. You may assume all letters are in lowercase.OutputOutput consists of a single line that contains the longest string that is a prefix of s1 and a suffix of s2, followed by the length of that prefix. If the longest such string is the empty string, then the output should be 0.
The lengths of s1 and s2 will be at most 50000.Sample Input
clinton
homer
riemann
marjorie
Sample Output
0
rie 3


思路就是直接拼接,然后處理即可。剛開始什么都沒考慮,直接交了。后來一點點發現了問題。8Y

列舉幾個特殊樣例即可

ab
abab

abab
ab

abc
ab

ab
cabc

len1為s1的長度,len2為s2的長度,len為總長

可以發現如果Next[len]<==0 肯定為0

否則可能為0

就是循環節的長度大于s1 或者滿足了不大于s1但是最終長度大于s2

還有可能就是一個很短的循環節循環了好多次。


 1 #include<stdio.h>
 2 #include<string.h>
 3 char s[100010],s1[50010];
 4 int len,lentemp1,lentemp2,Next[100010];
 5 
 6 void prekmp() {
 7     int i,j;
 8     j=Next[0]=-1;
 9     i=0;
10     while(i<len) {
11         while(j!=-1&&s[i]!=s[j]) j=Next[j];
12         Next[++i]=++j;
13     }
14 }
15 
16 int main() {
17     //freopen("in","r",stdin);
18     while(~scanf("%s",s)) {
19         lentemp1=strlen(s);
20         scanf("%s",s1);
21         lentemp2=strlen(s1);
22         strcat(s,s1);
23         len=strlen(s);
24         prekmp();
25         if(Next[len]>0) {
26             int i=Next[len];
27             while(i>lentemp1||i>lentemp2) {//小于s1&&小于s2  找滿足條件的最大i
28                 i=Next[i];
29             }
30             if(i<=0) printf("0\n");
31             else {
32                 for(int j=0;j<i;j++) printf("%c",s[j]);
33                 printf(" %d\n",i);
34             }
35         } else printf("0\n");
36     }
37 }

?








轉載于:https://www.cnblogs.com/ACMerszl/p/10269106.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/387599.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/387599.shtml
英文地址,請注明出處:http://en.pswp.cn/news/387599.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

SNI: 實現多域名虛擬主機的SSL/TLS認證

為什么80%的碼農都做不了架構師&#xff1f;>>> 一. 介紹 早期的SSLv2根據經典的公鑰基礎設施PKI(Public Key Infrastructure)設計&#xff0c;它默認認為&#xff1a;一臺服務器&#xff08;或者說一個IP&#xff09;只會提供一個服務&#xff0c;所以在SSL握手時…

echo(),print(),print_r(),var_dump()的區別

echo可以一次輸出多個值&#xff0c;多個值之間用逗號分隔。echo是語言結構(language construct)&#xff0c;而并不是真正的函數&#xff0c;因此不能作為表達式的一部分使用。echo是php的內部指令&#xff0c;不是函數&#xff0c;無返回值。 print()&#xff1a;函數print()…

我心目中的牛程序員、我們可以對比看看(人家還是看多年朋友面子上才肯幫忙1周,至少需支付1萬元辛苦費)...

為什么80%的碼農都做不了架構師&#xff1f;>>> 最近碰到客戶整個網站改版的需要&#xff0c;非常短的時間里只有1周時間里&#xff0c;需要把整個B2C網站徹底的進行版面&#xff0c;我自己估算了一下&#xff0c;就是往死里干一天工作48個小時&#xff0c;1周也干…

c#做端口轉發程序支持正向連接和反向鏈接

3389的時候 例子1&#xff1a;連接a機器的3389端口連不上&#xff0c;因為對方防火墻或者網關做了限制&#xff0c;只能訪問a機器的個別端口比如80。 例子2&#xff1a;連接a機器的幾乎所有端口都連不上&#xff08;對方乃內網或者防火墻網關做了限制&#xff09;&#xff0c…

Spring Boot(十四):spring boot整合shiro-登錄認證和權限管理

Spring Boot(十四)&#xff1a;spring boot整合shiro-登錄認證和權限管理 使用Spring Boot集成Apache Shiro。安全應該是互聯網公司的一道生命線&#xff0c;幾乎任何的公司都會涉及到這方面的需求。在Java領域一般有Spring Security、Apache Shiro等安全框架&#xff0c;但是由…

通用權限管理系統組件 (GPM - General Permissions Manager) 不改數據庫、甚至不寫代碼就集成銅墻鐵壁權限管理組件...

為什么80%的碼農都做不了架構師&#xff1f;>>> 越成熟的東西&#xff0c;越牛X的東西&#xff0c;越簡單才對&#xff0c;簡單才是硬道理&#xff0c;蘋果的手機只有少數幾個按鍵&#xff0c;蘋果Ipad也很少的按鈕&#xff0c;甚至連蘋果的筆記本鍵盤都少一排&…

數學符號及讀法大全

數學符號及讀法大全 常用數學輸入符號&#xff1a; ≈ ≡ ≠ &#xff1d; ≤≥ &#xff1c; &#xff1e; ≮ ≯ ∷ &#xff0b; &#xff0d; &#xff0f; ∫ ∮ ∝ ∞ ∧ ∨ ∑ ∏ ∪ ∩ ∈ ∵ ∴ ⊥ ‖ ∠ ⌒ ≌ ∽ √ &#xff08;&#xff09; 【】&#xff5b…

在使用win 7 無線承載網絡時,啟動該服務時,有時會提示:組或資源的狀態不是執行請求操作的正確狀態。 網上有文章指出,解決這個問題的方法是在設備管理器中啟動“Microsoft托管網絡虛擬適配

在使用win 7 無線承載網絡時&#xff0c;啟動該服務時&#xff0c;有時會提示&#xff1a;組或資源的狀態不是執行請求操作的正確狀態。 網上有文章指出&#xff0c;解決這個問題的方法是在設備管理器中啟動“Microsoft托管網絡虛擬適配器”&#xff0c;見 http://jingyan.baid…

阿里一年,聊聊我成長了什么,入職阿里的職業生涯感悟

2018.5.31~2019.5.31&#xff0c;一段精彩的旅程&#xff0c;渡過了在阿里一年的時光&#xff0c;這段時光有快樂、有焦慮、有迷茫、更有思考&#xff0c;思考的是自己過去的種種不足、思考的是一些現在看來之前錯誤的想法、思考的是如何成為一個更好的技術人&#xff0c;將這一…

偏差-方差分解(轉)

1、定義 這里所說的偏差-方差分解就是一種解釋模型泛化性能的一種工具。它是對模型的期望泛化錯誤率進行拆解。 樣本可能出現噪聲&#xff0c;使得收集到的數據樣本中的有的類別與實際真實類別不相符。對測試樣本 x&#xff0c;另 yd 為 x 在數據集中的標記&#xff0c;y 為真實…

用過C#的朋友可能認為它是一種十分安全的語言,其實C#也可以做到經典的緩沖區溢出。 本文章將用一個實例來描述C#究竟是如何發生緩沖區溢出的! 首先建立一個C# Console工程,并開啟工程的“允許

用過C#的朋友可能認為它是一種十分安全的語言&#xff0c;其實C#也可以做到經典的緩沖區溢出。 本文章將用一個實例來描述C#究竟是如何發生緩沖區溢出的&#xff01; 首先建立一個C# Console工程&#xff0c;并開啟工程的“允許不安全代碼”選項 鍵入代碼&#xff1a; [csharp]…

COOKIE偽造登錄網站后臺

1.關于XSS&#xff08;跨站腳本攻擊&#xff09;和CSRF&#xff08;跨站請求偽造&#xff09;的知識&#xff0c;xss表示Cross Site Scripting(跨站腳本攻擊)&#xff0c;它與SQL注入攻擊類似&#xff0c;SQL注入攻擊中以SQL語句作為用戶輸入&#xff0c;從而達到查詢/修改/刪除…

Spring Cloud 學習 (五) Zuul

Zuul 作為路由網關組件&#xff0c;在微服務架構中有著非常重要的作用&#xff0c;主要體現在以下 6 個方面&#xff1a; Zuul, Ribbon 以及 Eureka 相結合&#xff0c;可以實現智能路由和負載均衡的功能&#xff0c;Zuul 能夠將請求流量按某種策略分發到集群狀態的多個服務實例…

如何利用445端口進行入侵滲透 445端口入侵原因詳細解析。大家在進行入侵滲透個人電腦的時候,經常會碰到各種各樣的端口,比如135,1433,445,3306等端口,現在小編就給大家講解下445端口如

如何利用445端口進行入侵滲透 445端口入侵原因詳細解析。大家在進行入侵滲透個人電腦的時候&#xff0c;經常會碰到各種各樣的端口&#xff0c;比如135&#xff0c;1433&#xff0c;445&#xff0c;3306等端口&#xff0c;現在小編就給大家講解下445端口如何入侵。 445端口入侵…

項目復盤

前言 最近一年半多一直在做一個CMS項目&#xff0c;做了快兩年了也沒有上線&#xff0c;而且開發還走了不少&#xff0c;其中有不少原因是因為開發中頻繁改動需求導致開發人員失去耐心&#xff0c;但是其中還有一個重要的原因就是架構設計的不好&#xff0c;導致很多服務的邊界…

父、子頁面之間頁面元素的獲取,方法的調用

一、在iframe頁面上調取父級頁面元素 1.在父頁面上獲取iframe頁面元素(在父頁面修改子頁面div的背景色為紅色) js代碼如下&#xff1a; 1 <script type"text/javascript"> 2 window.onload function(){ 3 var iframe document.getElementById(iframeId)…

fiddler,他和其他抓包軟件有什么區別,如何使用fiddler進行抓包

前言&#xff1a;本文章是搭配《批量獲取微信公眾號》一文&#xff0c;介于群里朋友很熱情&#xff0c;我就趁著上班測完bug 來撰寫該文章&#xff0c;那么讀完本文&#xff0c;你會學習到什么呢&#xff1f; 什么是fiddler&#xff0c;他和其他抓包軟件有什么區別&#xff0c…

Vue導入非模塊化的第三方插件功能無效解決方案

一、問題&#xff1a; 最近在寫vue項目時&#xff0c;想引入某些非模塊化的第三方插件時&#xff0c;總是發現會有報錯。且在與本地運行插件測試對比時發現插件根本沒有注入到jQuery中&#xff08;console.log($.fn)查看當前jq有哪些方法&#xff09;&#xff0c;例如&#xff…

ES6筆記 -- 字符串拓展

字符串拓展 Unicode 相關 JS 允許使用/uxxxx的Unicode方式顯示字符, 但是只限于碼點在/u0000~/uFFFF之間, 超過該范圍的碼點必須用雙字節形式表示ES6 中, 將碼點放入大括號內, 就可以解讀JS 不能處理4個字節的字符, 字符串長度會被誤判為2ES6 提供了codePointAt方法, 能夠正確處…

android 轉發短信

通過這些代碼也可以對遠程手機實現短信控制。有興趣的可以自己改一下&#xff0c;說一下簡單的原理&#xff0c;要實現控制的話&#xff0c;必須得走一個固定的號碼&#xff0c;固定的格式&#xff0c;然后通過得到此號碼的內容&#xff0c;然后通過固定的內容&#xff0c;就可…