1. 程式人生 > >牛客題解day05

牛客題解day05

如果一個單詞通過迴圈右移獲得的單詞,我們稱這些單詞都為一種迴圈單詞。 例如:picture 和 turepic 就是屬於同一種迴圈單詞。 現在給出n個單詞,需要統計這個n個單詞中有多少種迴圈單詞。 

輸入描述:

輸入包括n+1行:

第一行為單詞個數n(1 ≤ n ≤ 50)

接下來的n行,每行一個單詞word[i],長度length(1 ≤ length ≤ 50)。由小寫字母構成


 

輸出描述:

輸出迴圈單詞的種數

示例1                       示例2                      示例3

輸入

5              7                   4
picture       ast                 a
turepic       ats                 aa
icturep       tas                 aaa
word          tsa                 aaaa
ordw          sat

                         sta

                          ttt

輸出

2             3                     4

思路:要解決兩個問題1:如何判斷是迴圈單詞

                                      (從網上找的思路:把字串拼接起來,判斷是否為拼接字串的字串)

                                   2:迴圈單詞的長度是一樣的

import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
		Scanner scanner=new Scanner(System.in);
		while(scanner.hasNext()) {
			int n=scanner.nextInt();
			String[] strarr=new String[n];
			for(int i=0;i<n;i++) {             //輸入n個字串,賦值到字串陣列中
				strarr[i]=scanner.next();
			}
	    System.out.println( mathThis(strarr,n));    
		}
	}

	private static int mathThis(String[] strarr,int n) {
		// TODO Auto-generated method stub
		int count=0;
		String doubleStrarr;
		doubleStrarr=strarr[0]+strarr[0];//拼接字串
		for(int i=0;i<n;i++) {
			
		    for(int j=i;j<n;j++) {
		    	if(doubleStrarr.contains(strarr[j])&&(doubleStrarr.length()/2)==strarr[j].length()) {
					strarr[j]=" ";//判斷是否是迴圈單詞(是否是拼接字串的字串並且長度是一樣的)
				}                  //如果是的話就賦值“ ”
		}
		    if((strarr[i]!=" "&&!doubleStrarr.contains(strarr[i]))||
		    		(strarr[i]!=" "&&!((doubleStrarr.length()/2)==strarr[i].length()))) {
		    	doubleStrarr=strarr[i]+strarr[i];//重新拼接新的字串
		    	count++;
		    }
		  
		}
		return count+1;
	}
}