美文网首页
Java日记2018-05-25

Java日记2018-05-25

作者: hayes0420 | 来源:发表于2018-05-25 07:06 被阅读0次
    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;
            
        }
    

    相关文章

      网友评论

          本文标题:Java日记2018-05-25

          本文链接:https://www.haomeiwen.com/subject/hvtyjftx.html