Как вращать строку, по одному символу за раз? - PullRequest
0 голосов
/ 11 июля 2019

Я не могу завершить логику этого шаблона, и я попробовал все виды операторов if-else

Это код, который я выполняю:

import java.util.Scanner;

public class String_pattern_01 {



public static void main(String[] args) {

        Scanner sc= new Scanner(System.in);
        System.out.println("Enter the character in continuation to get the pattern");
        String s=sc.next();
        int d=s.length();
        String s2[]=s.split("");
        for(int i=0;i<=s.length();i++)
        {    
            String x= s.substring(i, d);

            if(i>=1&i<d)
            {
                for(i=1;i<d;i++)
                {String y=x+x.substring(0,i-1);
                System.out.println(y);}
            }
            else
            {

                System.out.println(x);
            }

        }

    }

}

Ответы [ 2 ]

1 голос
/ 11 июля 2019

Можно просто уменьшить код до одного цикла for:

    Scanner sc = new Scanner(System.in);
    System.out.println("Enter the character in continuation to get the pattern");
    String s = sc.next();

    int d = s.length();
    for(int i = 0; i < d; i++)
    {    
        s = s.substring(1, d) + s.charAt(0);
        System.out.println(s);
    }

Пример прогона: При вводе abcde будет выведено:

bcdea
cdeab
deabc
eabcd
abcde

Цикл создает новый String каждую итерацию, получая первый символ String, используя charAt(0), затем добавляя его в конец substring, который пропускает первый символ.

1 голос
/ 11 июля 2019
public static void main(String[] args) {
  String input = "abcde";

  List<String> asList = input.chars()
    .mapToObj(e -> (char) e)
    .map(String::valueOf)
    .collect(Collectors.toList());

  for (int i = 0; i <= input.length(); i++) {
    System.out.println(String.join("", asList));
    Collections.rotate(asList, -1);
  }
}
  1. Превратить ввод String в List, где каждый элемент списка представляет собой один символ
  2. Присоединить список к одному String и распечатать его
  3. Поверните List влево и повторите

Это (вроде) ясный способ сделать это, церемония превращения String в List является большей проблемой, чем реальная работа, но как только мы ее получим, становится действительно ясно, что делает этот код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...