📌  相关文章
📜  获得相同字符串所需的最小旋转Java程序

📅  最后修改于: 2022-05-13 01:55:40.061000             🧑  作者: Mango

获得相同字符串所需的最小旋转Java程序

给定一个字符串,我们需要找到获得相同字符串所需的最小旋转次数。

例子:

Input : s = "geeks"
Output : 5

Input : s = "aaaa"
Output : 1

这个想法是基于下面的帖子。

检查字符串是否相互旋转的程序


第 1 步:
初始化结果 = 0(这里的结果是旋转计数)
第 2 步:取一个与原始字符串相等的临时字符串与其自身连接。
第 3 步:现在从第二个字符(或索引 1)开始取大小与原始字符串相同的临时字符串的子字符串。
第 4 步:增加计数。
步骤 5:检查子字符串是否与原始字符串相等。如果是,则打破循环。否则转到第 2 步并从下一个索引开始重复。

Java
// Java program to determine minimum number 
// of rotations required to yield same 
// string. 
  
import java.util.*; 
  
class GFG 
{ 
    // Returns count of rotations to get the 
    // same string back. 
    static int findRotations(String str) 
    { 
        // tmp is the concatenated string. 
        String tmp = str + str; 
        int n = str.length(); 
      
        for (int i = 1; i <= n; i++) 
        { 
      
            // substring from i index of original 
            // string size. 
              
            String substring = tmp.substring(
                      i, i+str.length()); 
      
            // if substring matches with original string 
            // then we will come out of the loop. 
            if (str.equals(substring)) 
                return i; 
        } 
        return n; 
    } 
  
    // Driver Method 
    public static void main(String[] args) 
    { 
            String str = "aaaa"; 
        System.out.println(findRotations(str)); 
    } 
} 
/* This code is contributed by Mr. Somesh Awasthi */



输出:
3

时间复杂度: O(n 2 )

有关更多详细信息,请参阅有关获得相同字符串所需的最小旋转的完整文章!