Отменить заданное предложение в Java - PullRequest
13 голосов
/ 26 апреля 2010

Может кто-нибудь сказать мне, как написать программу на Java, чтобы отменить заданное предложение?

Например, если введено:

"Это вопрос интервью"

Выходные данные должны быть:

"Вопрос интервью и это"

Ответы [ 14 ]

1 голос
/ 09 апреля 2013

Я не думаю, что вы должны использовать какую-либо библиотеку .. 1) Перевернуть всю строку 2) Переверните каждое слово.

public static void revWord(char[] a) {

    // reverse whole
    revWord(a, 0, a.length);

    int st = -1;
    int end = -1;

    for (int i = 0; i < a.length; i++) {

        if (st == -1 && a[i] != ' ') {
            st = i;
        }
        if (end == -1 && a[i] == ' ' ) {
            end = i;
        }
        if(i == a.length-1){
            end=i+1;
        }

        if (st != -1 && end != -1) {
            revWord(a, st, end );

            st = -1;
            end = -1;
        }

    }

}

public static void revWord(char[] a, int s, int l) {
    int mid = (l - s) / 2;
    l--;

    for (int i = 0; i < mid; i++, l--) {
        char t = a[s+i];
        a[s+i] = a[l];
        a[l] = t;
    }
}

`

1 голос
/ 01 декабря 2010

более хороший подход, вероятно .. где-то видел логику .. вот мой код, который мог бы сделать работу.

    public class revWords {

    public static void main(String[] args) {

        revWords obj = new revWords();
        String print = obj.reverseWords("I am God");
        System.out.println(print);

    }

    public String reverseWords(String words)
    {
      if(words == null || words.isEmpty() || !words.contains(" "))
        return words;

      String reversed = "";
      for( String word : words.split(" "))
        reversed = word + " " + reversed;

      return reversed;
    }

}
0 голосов
/ 14 декабря 2017

Кратчайший ответ

public class ReverseSentance {

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    System.out.println("Enter a sentance");
    String inputString = sc.nextLine();

    String[] words = inputString.split(" ");

    List<String> reverseWord = Arrays.asList(words);
    Collections.reverse(reverseWord);

    Iterator itr = reverseWord.iterator();

    while (itr.hasNext()) {
        System.out.print(itr.next() + " ");
    }
}

}

OR

public class ReverseSentance {

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    System.out.println("Enter a sentance");
    String inputString = sc.nextLine();

    String[] words = inputString.split(" ");

    for (int i = words.length-1 ; i >= 0; i--) {
        System.out.print(words[i] +" ");
    }
}
0 голосов
/ 21 января 2016

До того, как StringTokenizer был объявлен устаревшим, многие использовали для этого StringTokenizer . Я думал, что просто оставлю это здесь.

String sentence = "This is interview question";
String reversed = "";
StringTokenizer tokens = new StringTokenizer(sentence); 

while (tokens.hasMoreTokens()) { // Loop through each token
    reversed =  tokens.nextToken() + ' ' + reversed; //add to start
}

System.out.println(reversed.trim());
...