牛客題解day05
阿新 • • 發佈:2018-11-01
如果一個單詞通過迴圈右移獲得的單詞,我們稱這些單詞都為一種迴圈單詞。 例如: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;
}
}