Java实现字符数组单词反转

今天笔试时遇到一个题目:

       有一段英文用空格隔开,不包含标点符号,如: what are you doing   需输出格式如下doing you are what。要求只能借助定长的内存。

       答题的时候一时不知从何下手,然后就用到了 StringBuilder和Stack 虽然能实现输出结果但是却用到了不定长度的内存空间,自然不符合要求。于是下来百度了一番,发现大体思路为:

       1  全部倒排:如 what are you doing  => gniod uoy era tahw

       2 按照空格将每个单词执行步骤1   即: gniod => doing    uoy => you   era => are  tahw=>what

       知道思路之后具体代码如下:

       public class ReverseString {
public void reverseString( char[] input , int first , int last ){   //对字符数组input 指定范围内的元素 倒排序
char _temp = ' ' ;
while( first < last ){
_temp = input[first] ;
input[first] = input[last] ;
input[last] = _temp ;
first++ ;
last-- ;
}
}

public void reverAllWord( char[] input ){   //对字符数组input按照空格进行分割成各个段,然后倒排序
int first = 0 ; 
int last = 0 ;
while( last < input.length ){
if( input[last] == ' '){
if( input[last-1] != ' ' ){  //此处拼除掉多个连续的空格的情况
reverseString(input , first , last - 1 );
}
first = last + 1 ;
}
last ++ ;
}
if( first < last -1 ){ //此处保证 倒数第一个空格之后的字符进行倒排序
reverseString(input , first , last - 1 );
}
}

public static void main(String[] args) {
ReverseString _rs = new ReverseString() ;
char[] input = new char[]{'w','h','a','t',' ',' ',' ','a','r','e',' ','y','o','u',' ','d','o','i','n','g'};
_rs.reverseString(input, 0, input.length-1);
for( char _char : input ){
System.out.print(_char);
}
_rs.reverAllWord(input);
System.out.println(" ");
for( char _char : input ){
System.out.print(_char);
}
}



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值