1 题目描述:
* 给定字符串s, 要求把s中多于一个的连续空压缩成一个空格,并将连续的非空格字符串倒序打印出来,例如,给定"abc def efg",打印"cba fed gfe"
2 思路 : 采用栈解决问题
3 代码
import java.util.Stack;
/**
* 题目描述:
* 给定字符串s, 要求把s中多于一个的连续空压缩成一个空格,并将连续的非空格字符串倒序打印出来,例如,给定"abc def efg",打印"cba fed gfe"
*
* 思路 : 采用栈解决问题
*
* */
public class Exam4 {
public String getResult(String str){
if(str==null||str.length()==0){
return null;
}
Stack<String> stack = new Stack<String>(); // 用栈存储数据
StringBuffer stringBuffer = new StringBuffer();
for(int i = 0 ; i < str.length() ; i++){
String current = str.charAt(i)+"";
if(" ".equals(current)){
if(i==0){
stringBuffer.append(" "); // 字符串头有空格的压缩
}else if(stack.size()!=0){
while(stack.size()!=0){
stringBuffer.append(stack.pop()); //字符串倒着输出来
}
stringBuffer.append(" "); //压缩空格
}
}else{
stack.push(current);
}
}
if(stack.size()!=0){ //扫描完字符串后,栈里面还有字符
while(stack.size()!=0){
stringBuffer.append(stack.pop()); //字符串倒着输出来
}
}
return stringBuffer.toString();
}
public static void main(String args[]){
Exam4 exam = new Exam4();
String str = " sd s abc def sdfsdfa efg sf";
String result = exam.getResult(str);
System.out.println(result);
}
}
ds s cba fed afdsfds gfe fs