Я пытаюсь создать функцию, которая изменяет строку с StackOverflow is the best. на best. the is StackOverflow.

Я написал следующую функцию, но не могу исправить пробелы в строке result. По какой-то причине я получаю best.the is Stackoverflow. Между best. и the нет пробела, а после StackOverflow есть лишний пробел.

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

Может ли кто-нибудь помочь мне разобраться в этом?

public static void main(String[] args) {
    String str = "Stackoverflow is the best.";

    String result = change(str);

    System.out.println(result);
}



private static String change(String str) {
    String result = "";

    int i1 = str.length()-1;
    int i2 = str.length();

    for (i1 = str.length(); i1 >= 0; i1--) {

        if (i1 ==0 || str.charAt(i1-1) == ' ') {

            result = result.concat(str.substring(i1, i2));
            i2 = i1;
        }           
    }

return result;
}
0
Shir K 1 Июл 2019 в 19:06

3 ответа

Лучший ответ

Один из способов, о котором я мог подумать, не используя if's:

        String line = "Stackoverflow is the best.";
        String delimeter = " ";
        final String[] words = line.split(delimeter);
        String reversedLine = "";
        for(int i = words.length - 1; i >= 0; i--) {
            reversedLine += words[i] + delimeter;
        }
        // remove the delimeter present at last of line
        reversedLine = reversedLine.substring(0, reversedLine.length() - 1);
        System.out.println(reversedLine);
1
Aravind Reddy P 1 Июл 2019 в 17:02

Чтобы сгенерировать вывод, как вы упомянули, я подхожу к проблеме следующим образом:

class Solution {
  public static void main(String[] args) {
    String str = "StackOverflow is the best.";
    String[] arr = str.split(" ");
    System.out.print(arr[arr.length-1]);
    for(int i = arr.length - 2; i >= 0; i--){
      System.out.print(" "+arr[i]);
    }
  }
}
0
Bivash Pandey 5 Июл 2019 в 01:10

Единственная причина вашей проблемы в том, что вы не добавили пробел после '.' Попробуйте использовать String str = "Stackoverflow is the best. ";

Надеюсь, это помогло ... :)

-2
user9502770user9502770 1 Июл 2019 в 16:15