您当前的位置: 首页 > 
  • 0浏览

    0关注

    674博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

翻转单词顺序列

沙漠一只雕得儿得儿 发布时间:2016-11-18 19:23:06 ,浏览量:0


题目描述

将一个英文语句以单词为单位逆序排放。例如“I am a boy”,逆序排放后为“boy a am I” 所有单词之间用一个空格隔开,语句中除了英文字母外,不再包含其他字符

解题思路:

方法一:利用split函数,划分空格,逆序输出:

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String s = sc.nextLine();
		String[] split = s.split(" ");
		StringBuilder aa = new StringBuilder();
		for (int i = split.length - 1; i > 0; i--) {
			aa.append(split[i] + " ");
		}
        aa.append(split[0]);
		System.out.print(aa);
	}

}

方法二:利用栈先进后出的性质,依次把单词入栈。方法,遍历字符串,临时字符串变量temp存储每个单词,遇到空格就入栈,最后依次弹栈即可。

package 字符串下;

import java.util.Stack;

public class ReverseWord {
	public static String reverseWord(String str) {
		Stack stack = new Stack();
		StringBuilder temp = new StringBuilder();
		for (int i = 0; i < str.length(); i++) {
			if (str.charAt(i) != ' '){
				temp.append(str.charAt(i));		//非空格就一直在sb后面添加元素
			} else {
				stack.push(temp.toString());	//如果遇到空格,就把刚刚添加到sb的字符串入栈,单词入栈
				temp = new StringBuilder();		//重新初始化sb
			}
		}
		stack.push(temp.toString());			//添加最后一串单词,也就是第一个单词串
		
		StringBuilder sb = new StringBuilder();
		while (!stack.isEmpty()) {
			sb.append(stack.pop());
			sb.append(" ");
		}
		return sb.deleteCharAt(sb.length()-1).toString();
	}

	public static void main(String[] args) {
		String string = reverseWord("123 asd qwec`");
		System.out.println(string);
	}
}

关注
打赏
1657159701
查看更多评论
立即登录/注册

微信扫码登录

0.0365s