zoukankan      html  css  js  c++  java
  • 求最小周期串

    如果一个字符串可以由某个长度为k的字符串重复多次得到,则该串以k为周期。例如,abcabcabcabc以3为周期(注意,它也以6和12为周期)。输入一个长度不超过80的串,输出它的最小周期。
    样例输入:HoHoHo
    样例输出:2

    思路:假设输入的字符串是in[],遍历所有可能的周期i,那么序列中的所有数j都会满足 in[j]==in[j%i],如果不满足的话跳出循环,如满足的话打印跳出,这个时候就能保证是最小周期串.

    java实现的代码为:

    package ch02;
    
    import java.util.Scanner;
    
    public class StringTimes {
    
    	/**
    	 * @param args
    	 */
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Scanner scanner = new Scanner(System.in);
    		String input = null;
    		while((input = scanner.next()) != null){
    			getTime(input);
    		};
    
    	}
    	public static void getTime(String input){
    		int len = input.length();
    		
    		char[] word = input.toCharArray();
    		for(int i = 1; i <= len;i++){
    			if(len % i == 0){
    				int ok = 1;
    				for(int j = 1;j < len ;j++){
    					if(word[j] != word[j % i]){
    						ok = 0;
    						break;
    					}
    				}
    				if(ok == 1){
    					System.out.print(i);
    					break;
    				}
    			}
    			
    			
    			
    		}
    	}
    		
    	
    	
    }
    

      

  • 相关阅读:
    11.个别程序题
    常见设计模式部分
    框架部分综合
    mybatis部分
    spring部分
    hibernate部分
    struts2部分
    10.java反射和类加载机制
    9.垃圾回收机制和JVM
    oracle部分
  • 原文地址:https://www.cnblogs.com/dongqiSilent/p/3427132.html
Copyright © 2011-2022 走看看