生成字符串的旋转,java

时间:2015-02-20 20:39:45

标签: java string arraylist rotation

假设我有一个字符串“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));
   }
}

3 个答案:

答案 0 :(得分:1)

您非常接近,而不是打印出每个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);
    }
}

答案 1 :(得分:0)

试试这段代码:

    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);
    }

答案 2 :(得分:0)

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)); 
}