問(wèn)題描述 右右喜歡聽(tīng)故事,但是右右的媽媽總是講一些“從前有座山,山里有座廟,廟里有個(gè)老和尚給小和尚講故事,講的什么呢?從前有座山……”這樣循環(huán)的故事來(lái)搪塞右右。 我們定義,如果一個(gè)字符串是以一個(gè)或者一個(gè)以上的長(zhǎng)度為k的重復(fù)字符串所連接成的,那么這個(gè)字符串就叫做周期為k的串。 例如: 字符串’abcabcabcabc’周期為3,因?yàn)樗怯?個(gè)循環(huán)’abc’組成的。它同樣是以6為周期(兩個(gè)重復(fù)的’abcabc’)和以12為周期(一個(gè)循環(huán)’abcabcabcabc’)。 右右現(xiàn)在想給他的朋友大灰狼轉(zhuǎn)述媽媽講的故事,請(qǐng)幫他寫(xiě)一個(gè)程序,可以測(cè)定一個(gè)字符串的最小周期。 輸入格式 一個(gè)最大長(zhǎng)度為100的無(wú)空格的字符串。 輸出格式 一個(gè)整數(shù),表示輸入的字符串的最小周期。 樣例輸入 HaHaHa 樣例輸出 2 樣例輸入 Return0 樣例輸出 7
import java.util.Scanner;public class Main{ public static void main(String args[]){ Scanner in=new Scanner(System.in); String s=in.nextLine(); min_Cycle(s); } public static void min_Cycle(String s){ String demo=""; int cycle=0; for(int i=1;i<=s.length() ;i++){ if(s.length()%i==0){ demo=s.substring(0, i); if(cmp(s,demo)){ cycle=demo.length(); break; }else { cycle=s.length(); } } } System.out.PRintln(cycle); } public static boolean cmp(String s,String demo){ int demo_L=demo.length(); boolean flag=true; for(int i=0;i<s.length()-1;i+=demo_L){ if(!demo.equals(s.substring(i, i+demo_L))){ flag=false; } } return flag; }} /*這道題花了我這個(gè)小白好長(zhǎng)時(shí)間了,期間少寫(xiě)了break語(yǔ)句,就扣了10分,還有min_Cycle函數(shù)里的for循環(huán)的判斷條件寫(xiě)成了i<s.length();也扣了10分,以后還得多注意,多思考。*/新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注