周期串-java
問題描述:一個字符串可以由某個長度為k的字符串重復多次得到。該串的周期可以看為K。eg:HAHAHA周期為2? 特殊案例 HABC 周期為4
1.java
import java.util.Scanner;
/**
?* 周期串
?* @author NEU-2015
?*
?*/
public class Demo {
??? public static void main(String[] args) {
??????? Scanner input = new Scanner(System.in);
??????? String str = null;
??????? boolean flag = true; ?
??????? while (input.hasNext()) {
??????????? str = input.nextLine();
??????????? for (int i = 1; i < str.length(); i++) {
??????????????? if (str.length() % i == 0) {? //因為字符串是循環得到的 所以滿足這個關系時?? eg:HAaHAa 6%3 == 0;
??????????????????? flag = true; ?
??????????????????? for (int j = i; j <= str.length(); j++) {????????? //等號用來判斷是否存在周期為1 的情況
??????????????????????? if (str.charAt(j) != str.charAt(j % i)) {
??????????????????????????? flag = false;????? //沒有匹配成功? 返回false 結束匹配
??????????????????????????? break;
??????????????????????? }
??????????????????? }
??????????????????? if(flag) {
??????????????????????? System.out.println(i);
??????????????????? }
??????????????? }
??????????? }
??????? }
??? }
} 2.c
#include <stdio.h> #include <string.h> //@author NEU-2015 int main() {char word[100];scanf("%s", word);int len = strlen(word);for(int i = 1; i <= len; i++) if(len % i == 0) {int ok = 1; //標志位for(int j = i; j < len; j++) {if(word[j] != word[j%i]) {ok = 0; break;}}if(ok) {printf("%d\n", i);break;}}return 0; }
?
轉載于:https://www.cnblogs.com/NEU-2015/p/7496690.html
總結
- 上一篇: 日开头的四字成语有哪些?
- 下一篇: C# BackgroundWorker