为了账号安全,请及时绑定邮箱和手机立即绑定

反向单词输入的逻辑校正-[Tom Cat] O / p [Cat Tom],不使用拆分功能

反向单词输入的逻辑校正-[Tom Cat] O / p [Cat Tom],不使用拆分功能

慕虎7371278 2021-05-13 14:23:08
public static void reverse() {    int x=0;    char temp = 0;    String toStrore;    char checkSpace=' ';    System.out.println("Enter a line to reverse");    Scanner sc=new Scanner(System.in);    String userInput=sc.nextLine();    char[] charArray=userInput.toCharArray();    for(int i=charArray.length-1;i>=0;i--){        char tchar=charArray[i];        while(tchar==checkSpace){             x = ++i;            for(int j=x;j<=charArray.length-1;i++){                temp=(char) (temp+charArray[j]);                System.out.print(temp);            }        }       }} 请帮我逻辑。注意:除lenght()外,我不想使用任何内置功能。
查看完整描述

2 回答

?
动漫人物

TA贡献1815条经验 获得超10个赞

试试这个


import java.util.Arrays;


public class Reverse {

    public static void main(String... args) {

        getReversed("Tom Cat");

    }


    public static void getReversed(String str) {

        char[] arr = str.toCharArray();

        int len = 0;

        for (char ch : arr) {

            if (ch == ' ') {

                len++;

            }

        }

        String[] res = new String[len + 1];

        int start = 0;

        int idx = len;

        while (idx > -1) {

            StringBuilder builder = new StringBuilder();

            for (int i = start; i < arr.length; i++) {

                if (arr[i] != ' ') {

                    builder.append(arr[i]);

                    if (i == arr.length - 1) {

                        res[idx--] = builder.toString();

                    }

                } else {

                    res[idx--] = builder.toString();

                    builder.setLength(0);

                    start = i;

                }

            }

        }

        System.out.println(Arrays.toString(res));

    }

}

更新了优化代码

public static void main(String... args) {

    String str = "Cat Tom";

    char[] charArr = str.toCharArray();

    int len = charArr.length;

    ArrayList<String> list = new ArrayList<>();

    StringBuilder stringBuilder = new StringBuilder();

    for (int i = 0; i < len; i++) {

        char ch = charArr[i];

        if (ch == ' ') {

            list.add(stringBuilder.toString());

            stringBuilder = new StringBuilder();

        } else if (i == len - 1) {

            list.add(stringBuilder.append(ch).toString());

        } else {

            stringBuilder.append(ch);

        }

    }

    Collections.reverse(list);

    System.out.println(list);

}

输出


[Cat, Tom]


查看完整回答
反对 回复 2021-05-19
  • 2 回答
  • 0 关注
  • 146 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信