POJ-2406 Power Strings (kmp算法)
来源:互联网 发布:网络贷款不还钱 编辑:程序博客网 时间:2024/05/17 23:00
Power Strings
Time Limit: 3000MS
Memory Limit: 65536K
Description
Given two strings a and b we define a*b to be their concatenation. For example, if a = “abc” and b = “def” then a*b = “abcdef”. If we think of concatenation as multiplication, exponentiation by a non-negative integer is defined in the normal way: a^0 = “” (the empty string) and a^(n+1) = a*(a^n).
Input
Each test case is a line of input representing s, a string of printable characters. The length of s will be at least 1 and will not exceed 1 million characters. A line containing a period follows the last test case.
Output
For each s you should print the largest n such that s = a^n for some string a.
Sample Input
abcd
aaaa
ababab
.
Sample Output
1
4
3
题意:给出一个字符串,找出一个最小的子串,该子串重复一定的次数便能组成原字符串,最后输出重复的次数。
题解:用KMP算法中的getnext()解题
代码:
#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int N = 1e6+1;int Next[N];char p[N];int getnext() {//next[i]表示i长度的匹配串所拥有的 最长相同前缀后缀 长度 Next[0] = -1; int i = 0, j = -1;//i为pattern串的指针,j为Next数组的指针 int lenth = strlen(p); while (i < lenth) {//没有到pattern的末尾 if (j == -1 || p[i] == p[j]) {//当前位置匹配 i++; //移动到下一个位置 j++;//匹配个数增加 Next[i] = j;//i位置的匹配数为j } else j = Next[j];//不匹配就向前回溯 } int left = lenth - j;//left是最小的重复子串长度 if (lenth%left == 0) return lenth / left;//能整除说明这个最小子串可以重复成当前的串 else return 1;}int main() { while (gets(p)) { if (p[0] == '.') break; printf("%d\n", getnext()); } return 0;}
- poj 2406 Power Strings kmp算法
- poj 2406 Power Strings kmp算法
- POJ 2406 Power Strings:KMP算法
- poj 2406 Power Strings(kmp算法)
- POJ 2406--Power Strings(kmp算法)
- poj 2406 Power Strings KMP算法
- POJ 2406 Power Strings(KMP算法)
- POJ 2406 Power Strings KMP算法
- POJ-2406 Power Strings (kmp算法)
- poj 2406 Power Strings---kmp
- POJ 2406 Power Strings KMP
- poj-2406-Power Strings-kmp
- POJ-2406 Power Strings KMP
- Power Strings - POJ 2406 KMP
- poj 2406 Power Strings kmp
- POJ 2406-Power Strings (KMP)
- 【KMP】 POJ 2406 Power Strings
- poj 2406 Power Strings KMP
- 技术不局限于赚钱,还应当保护我们的家人
- 自学笔记:正则表达式入门
- DOM应用
- Forrester:私有云正卷土重来
- nginx 重写去掉index.php
- POJ-2406 Power Strings (kmp算法)
- java并发编程:主线程等待子线程结束 CountDownLatch
- Mysql表压缩 列压缩
- Git FAQ
- procedure
- 算法基础_熄灯问题
- 一、开始使用Tango构建app
- linux中安装node.js,配置全局环境
- 理解RESTful架构