字符串反转算法题

字符串反转算法题

   今天聊一聊之前练过的算法题,有个学弟问我,我讲完了然后整理了整理,贴到博客园里:

 

    字符串反转  比如 “我爱你”,成了 “你爱我”

 

  哈哈哈,废话不多说,先哔哔下思路:

    I love you  应该这么玩儿 先把整个字符串 反转  uoy evol I  然后根据空格分出单词 单词再逐个 反转  you love I

秒懂了吧?

闲言碎语不要讲,上代码:

     

package TT;


public class Test1 {

    public static void rotateWord(char[] chas){
        
          if(chas.length ==0 || chas==null){
              return;
          }
          
       reverse(chas, 0, chas.length-1);
       
       int l =-1;
       int r = -1;
       for(int i =0; i<chas.length; i++){
           
           if(chas[i] !=' '){
               l = i ==0 ||chas[i-1]==' ' ? i : l;
               r = i ==chas.length-1 || chas[i+1] ==' ' ? i:r;
               
           }
           if(l!=-1 && r!=-1){
                reverse(chas,l,r);
                l = -1;
                r =-1;
           }
           
       }
        
    }
       
    public static void reverse(char[] chas, int start, int end){
         char tmp = 0;
         while(start <end){
             tmp = chas[start];
             chas[start]=chas[end];
             chas[end]=tmp;
             start++;
             end--;
             
         }
    }
    
    
    public static void main(String[] args){
        
        String a ="I love you";
        char[] b = a.toCharArray();
        System.out.println(a);
        rotateWord(b);
        String c = String.valueOf(b);
        System.out.println(c);
    }
    
    
    
      
      }
      

    
    

测试结果:

  

 

posted @ 2017-08-14 16:36 toov5 阅读( ...) 评论( ...) 编辑 收藏
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值