java - 制作字符串所需的旋转次数

标签 java

这是我计算旋转次数的代码。 但是IDK,它有什么问题。 任何人都可以解释并帮助我。

Test Case: Input: david vidda

Output: 2

我尝试使用蛮力方法,但那甚至不起作用。 谁能指出我的错误??

import java.util.*;

class solution{
    public static int arrayLeftRotation(StringBuilder str1, StringBuilder str2) 
    {
     int i;
     int count =0;
     for (i = 0; i < str1.length(); i++){
        if(str1.equals(str2))
        { 
            count++; 
            str1 = leftRotatebyOne(str1); 
            System.out.println(str1);
        }
        else return count;
     }

        return count;
    }

    static StringBuilder leftRotatebyOne(StringBuilder str) 
    {
        int i;
        char temp = str.charAt(0);
        for (i = 0; i < str.length()-1; i++)
            str.setCharAt(str.indexOf(str.charAt(i)+""),str.charAt(i+1));
        str.setCharAt(i,temp);
        return str;
    }

    public static void main(String[] args)
    {
        Scanner in = new Scanner(System.in);
        String strr1= in.nextLine();
        StringBuilder str1  = new StringBuilder(strr1);
        String strr2 = in.nextLine();
        StringBuilder str2  = new StringBuilder(strr2);
        System.out.print(arrayLeftRotation(str1, str2));
    }
}

最佳答案

您的方法 leftRotateByOne 看起来比必要的更复杂。 试试这个:

public class Solution
{
  public static int arrayLeftRotation(String str1,
                                      String str2)
  {
    int nr_rotate;
    int counter;
    nr_rotate = 0;
    for (counter = 0; counter < str1.length(); counter++)
    {
      if (str1.equals(str2))
        return (nr_rotate);
      else
      {
        str1 = leftRotateByOne(str1);
        nr_rotate++;
        System.out.println(str1);
      }
    }

    // No possible solution
    return (-1);

  } // arrayLeftRotation

  public static String leftRotateByOne(String str)
  {
    return (str.substring(1) + str.charAt(0));
  }

  public static void main(String[] args)
  {
    String str1 = "david";
    String str2 = "vidda";
    System.out.print(arrayLeftRotation(str1, str2));
  }

} // class Solution

关于java - 制作字符串所需的旋转次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52327457/

相关文章:

java - 如何从javascript发送具有相同编码的参数?

java - 如何进行Spring JDBC连接并检索数据?

java - JPA - 同一类的列数错误。应该是 2

java - 如何计算从 10 x 10 java JButton 网格中单击了多少个 JButton

java - 在 Eclipse 中找不到资源

java - 为什么返回空白?

java Apache Cxf HTTP 身份验证

java - Android Studio - 访问维基百科页面时出现 SAXParseException

java - 在JTable中添加背景图片

java - 阅读日历日期