2015-02-20 5 views
-1

Предположим, у меня есть строка «big $». Мне нужно следующее: big$ ig$b g$bi $bigГенерировать вращения строки, java

Мне также нужно сохранить эти строки в 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)); 
    } 
} 
+0

Можете ли вы описать, как вы получите эти результаты? –

+0

Пожалуйста, покажите свои усилия. – tnw

+1

@SotiriosDelimanolis Похоже, что символы «вращаются» слева. Символы в индексе 1 и сдвиг влево и первый символ попадают в конец строки. – tnw

ответ

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

Для лучшей производительности используйте 'StringBuilder' и его методы' append'. – Pshemo

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); 
    } 
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)); 
} 
Смежные вопросы