生成字符串的旋转,java

Generate rotations of a string, java

假设,我有一个字符串"big$"。我需要以下内容: big$ ig$b g$bi $big

我还需要将这些字符串存储在一个 ArrayList 中。 有人可以帮帮我吗。我想不出解决办法。

这就是我所做的。可以打印,但是不知道怎么保存。

private static void rotations(String str) {
    int n = str.length();
    char temp;
    String temp1 = null;

    for(int i=0; i<n; i++){
        System.out.println();
        for(int j=i+1; j<n; j++)
            System.out.print(str.charAt(j));
        for(int k=0; k<=i; k++)
            System.out.print(str.charAt(k));
   }
}

试试这个代码:

    String a = "big$";
    char[] array = a.toCharArray();
    List<String> list = new ArrayList<String>();
    for(int i = 0; i < array.length; i++)
    {
        String temp = "" + array[i];
        for( int j = i+1; j < array.length + i; j++)
        {
            temp += array[j%(array.length)];
        }
        list.add(temp);
    }

ArrayList 的简单示例:

ArrayList<String> container = new ArrayList<String>();
container.add("A");
container.add("B");
container.add("C");

for (int i = 0; i < container.size(); i++) {
    System.out.println(container.get(i)); 
}

你非常接近,而不是打印出每个 char 将它附加到循环内的 String 变量,然后将该变量添加到 ArrayList<String>

private static List<String> rotations(String str) {
    int n = str.length();
    char temp;
    String temp1 = null;

    List<String> retval = new ArrayList<String>();

    for(int i=0; i<n; i++){
        StringBuilder sb = new StringBuilder();
        for(int j=i+1; j<n; j++)
            sb.append(str.charAt(j));
        for(int k=0; k<=i; k++)
            sb.append(str.charAt(k));
        retval.add(sb.toString());
   }
   return retval;
}

你可以在你的主要方法中打印出来:

public static void main (String[] args)
{
    List<String> rotations = rotations("big$");
    for(String s : rotations)
    {
        System.out.println(s);
    }
}