菜鸟笔记
提升您的技术认知

面试题

实现一个LRU Cache 算法LRU Cache C++三种解法java实现LRU算法及编码实现LRU策略缓存LRU算法常见缓存算法和LRU的c++实现设计循环双端队列(deque)LRU 缓存结构 (c++ 哈希双链表实现)LRU缓存机制删除单链表中的指定节点Linux 内核经典面试题拼多多社招面经:Redis是重点,讲一讲redis的内存模型线程、进程、协程的区别C++经典面试题面试官:我们只想要这样的C++工程师Linux C/C++ 学习路线链表操作汇总C++11的智能指针面试题浏览器中输入url后发生的事情常用的限流算法HTTP协议和HTTPS协议面试题网络编程面试题目总结c++后台面试题目如何实现LRU算法?如何寻找无序数组中的第K大元素?布隆过滤器 - 如何在100个亿URL中快速判断某URL是否存在?如何实现大整数相加?C++面试题及基本知识点总结C++给定出栈序列判定是否合法消息队列面试题要点redis缓存击穿,失效以及热点key解决方案网页在浏览器上的渲染过程几种限流算法lru算法例题C/C++常见面试知识点总结附面试真题----20210529更新引入MQ消息队列的作用及其优缺点MySQL面试篇社招三年后端面试题60道测开面试题,背完直接涨工资二叉树的层序遍历(两种方法实现)Bitmap 海量数据处理字符串倒序输出的五种方法C语言 输入10个数,统计出并输出正数、负数和0的个数字节三面:如何设计一个高并发系统架构,网络 面试36问,DDos攻击原理C++线程池使用 C++11 编写可复用多线程任务池

字符串倒序输出的五种方法

阅读 : 451
//1. 使用数组循环
public static String array(String s){
        int length=s.length();
        char[] array=s.toCharArray();
        for(int i=0;i<length/2;i++){
            array[i]=s.charAt(length-1-i);
            array[length-1-i]=s.charAt(i);
        }
        return new String(array);       
    }
//2. StringBuffer的reverse方法
public static StringBuffer buffer(String s){
        StringBuffer sb=new StringBuffer();
        sb.append(s);       
        return sb.reverse();
    }
//3. StringBuffer的循环    
    public static String buffer2(String s){
        int length=s.length();
        StringBuffer sb=new StringBuffer();
        for(int i=s.length()-1;i>=0;i--){
            sb.append(s.charAt(i));
        }
        return sb.toString();       
    } //StringBuilder比StringBuffer快,但线程不安全

//4.栈的后进先出
    public static String reverseByStack(String str) {  
        if(str == null || str.length() == 0) {  
            return str;  
        }  
        Stack<Character> strStack = new Stack<Character>();  
        char[] chArray = str.toCharArray();  
        for(Character ch: chArray) {  
            strStack.push(ch);  
        }  
        int len = str.length();  
        for(int i= 0; i< len; i++) {  
            chArray[i] = strStack.pop();  
        }  
        return new String(chArray);  
    }  
5.  迭代完成
    public static String reverseByRecursive(String str) {  
      if(str == null || str.length() == 0) {  
           return str;  }  
      int len = str.length();  
      if(len == 1) {  
         return str;  
      } else {  
return reverseByRecursive(str.substring(1))+ str.charAt(0);  
        }  
    }