zoukankan      html  css  js  c++  java
  • Java实现 蓝桥杯 算法提高 周期字串

    算法提高 周期字串
    时间限制:1.0s 内存限制:256.0MB

    问题描述
      右右喜欢听故事,但是右右的妈妈总是讲一些“从前有座山,山里有座庙,庙里有个老和尚给小和尚讲故事,讲的什么呢?从前有座山……”这样循环的故事来搪塞右右。
      我们定义,如果一个字符串是以一个或者一个以上的长度为k的重复字符串所连接成的,那么这个字符串就叫做周期为k的串。
      例如:
      字符串’abcabcabcabc’周期为3,因为它是由4个循环’abc’组成的。它同样是以6为周期(两个重复的’abcabc’)和以12为周期(一个循环’abcabcabcabc’)。
      右右现在想给他的朋友大灰狼转述妈妈讲的故事,请帮他写一个程序,可以测定一个字符串的最小周期。
    输入格式
      一个最大长度为100的无空格的字符串。
    输出格式
      一个整数,表示输入的字符串的最小周期。
    样例输入
    HaHaHa
    样例输出
    2
    样例输入
    Return0
    样例输出
    7

    import java.util.Scanner;
    
    
    public class 周期字串 {
    	 public static void main(String[] args){  
    	        Scanner input=new Scanner(System.in);  
    	        char[] s=input.nextLine().toCharArray();
    	        int ans=1;//字符串周期
    	        while(true){
    	        	while(s.length%ans!=0)//若ans不能整除字符串长度,则递增ans
    	        		++ans;
    	        	boolean f=true;
    	        	for(int i=ans;i<s.length&&f;i+=ans)//进行N/ans重循环
    	        		for(int j=0;j<ans&&f;++j)//判断i~ans-1字符和i~i+ans-1个字符是否完全一致
    	        			if(s[j]!=s[j+i]){//字符不同
    	        				++ans;//递增ans
    	        				f=false;
    	        			}
    	        	if(f)//N/ans重循环字符均一致,跳出循环
    	        		break;
    	        				
    	        }
    	        System.out.println(ans);
    	    }  
    
    
    }
    
    
  • 相关阅读:
    一些性能查询的SQL 备忘
    informatica powercenter学习笔记(LookUp 使用)
    BIEE使用技巧
    Linux 系统中用户切换
    手动将自定制的WebPart部署到 SharePoint 2010 中
    C# Process运行cmd命令的异步回显
    Union和Union all的区别
    C#输入输出重定向
    c# 其他技术学习
    Oracle查看所有用户
  • 原文地址:https://www.cnblogs.com/a1439775520/p/12948720.html
Copyright © 2011-2022 走看看