以单词为单位倒序输出一个字符串

看到坛子里有人提出这么一个问题,如何将"I am a programmer"输出成"remmargorp a ma I"。注意:相邻两个单词的空格数一次是1个,2个,3个。

1. 利用split()方法实现。

public class TestSplit { public static void main (String args[]){ String str1 = "I am a programmer"; String str2 = ""; String[] strArray = str1.split(" "); for (int i=strArray.length-1; i>=0; i--){ str2 += strArray[i]+" "; } System.out.print (str2); } }

输出:

programmer a am I

这个方法有一个缺点就是无法正常输出字符串后面的空格,需要改进下...

2. 利用堆栈实现。

import java.util.*; public class UsingStackReverseString { public static void main (String args[]){ String str1 = " I am a programmer "; String str2 = ""; Stack stack1 = new Stack(); Stack stack2 = new Stack(); char[] strArray = str1.toCharArray(); for (int i=0; i<strArray.length; i++){ stack1.push(strArray[i]); } while (!stack1.empty()){ if (stack1.peek() == (Object)' '){ while (!stack2.empty()){ str2 += stack2.pop(); } str2 += stack1.pop(); } else{ stack2.push(stack1.pop()); } while ((!stack2.empty()) && stack1.empty()){ str2 += stack2.pop(); } } System.out.print(str2); } }

结果是:

programmer a am I

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值