Java日记2018-05-25

2018-05-25  本文已影响0人  hayes0420
  1. 替换空格
    请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为 We Are Happy. 则经过替换之后的字符串为 We%20Are%20Happy。
    本来以为算法很清晰很简单,结果卡壳,最后发现是填充时候错误,一个空格填3个,实际应该补2个字符
public static String replaceSpace(StringBuffer str) {
        if(str==null) return null;
        int oldLen = str.length();
        for(int i =0;i<str.length();i++) {
            if(str.charAt(i)==' ') {
                str.append("%2");//这里应该补两个字符
            }
        }
        System.out.println("2:"+str.toString());
        int p1 = oldLen - 1, p2 = str.length() - 1;
        while(p1>=0&&p2>p1) {
            if(str.charAt(p1)==' '){
                str.setCharAt(p2, '0');
                str.setCharAt(p2-1, '2');
                str.setCharAt(p2-2, '%');
                p2=p2-3;
                p1--;
                //System.out.println("p2:"+p2);
                System.out.println("1:"+str.toString());
            } else {
                str.setCharAt(p2, str.charAt(p1));
                p1--;
                p2--;
                //System.out.println("p1:"+p1+" p2:"+p2);
                System.out.println("2:"+str.toString());
            }
        }
        
        System.out.println("+:"+str.toString());
        return str.toString();
    }
  1. 从尾到头打印链表
    递归
public ArrayList<Integer> printListFromTailToHead(ListNode node){
        Stack<Integer> sta = new Stack<>();
        while(node!=null) {
            sta.add(node.val);
            node=node.next;
        }
        ArrayList<Integer> ret = new ArrayList<>();
        while(sta.isEmpty()==false) {
            ret.add(sta.pop());
        }
        return ret;
        
    }
上一篇下一篇

猜你喜欢

热点阅读