zoukankan      html  css  js  c++  java
  • (2)剑指Offer之二维数组查找和替换空格问题

    一 二维数组查找

    题目描述:

    在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

    问题解析:

    这一道题还是比较简单的,我们需要考虑的是如何做,效率最快。这里有一种很好理解的思路:

    矩阵是有序的,从左下角来看,向上数字递减,向右数字递增,
    因此从左下角开始查找,当要查找数字比左下角数字大时。右移
    要查找数字比左下角数字小时,上移。这样找的速度最快。

    示例代码:

        public boolean Find(int target, int [][] array) {
            //基本思路从左下角开始找,这样速度最快
           int row = array.length-1;//行
            int column = 0;//列
            //当行数大于0,当前列数小于总列数时循环条件成立
            while((row >= 0)&& (column< array[0].length)){
                if(array[row][column] > target){
                    row--;
                }else if(array[row][column] < target){
                   column++;
                }else{
                    return true;
                }
            }
            return false;
        }

    二 替换空格

    题目描述:

    请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。

    问题分析:

    这道题不难,我们可以通过循环判断字符串的字符是否为空格,是的话就利用append()方法添加追加“%20”,否则还是追加原字符。

    或者最简单的方法就是利用: replaceAll(String regex,String replacement)方法了,一行代码就可以解决。

    示例代码:

    常规做法:

        public String replaceSpace(StringBuffer str) {
            StringBuffer out=new StringBuffer();
            for (int i = 0; i < str.toString().length(); i++) {
                char b=str.charAt(i);
                if(String.valueOf(b).equals(" ")){
                    out.append("%20");
                }else{
                    out.append(b);
                }
            }
            return out.toString();     
        }

    一行代码解决:

        public String replaceSpace(StringBuffer str) {
            //return str.toString().replaceAll(" ", "%20");
            //public String replaceAll(String regex,String replacement)
            //用给定的替换替换与给定的regular expression匹配的此字符串的每个子字符串。 
            // 转义字符. 如果你要使用 "" 本身, 则应该使用 "\". String类型中的空格用“s”表示,所以我这里猜测"\s"就是代表空格的意思
            return str.toString().replaceAll("\s", "%20");
        }
    

    欢迎关注我的微信公众号(分享各种Java学习资源,面试题,以及企业级Java实战项目回复关键字免费领取):
    微信公众号

  • 相关阅读:
    进阶系列(8)——匿名方法与lambda表达式
    进阶系列(3)—— 序列化与反序列化
    进阶系列(4)——扩展方法
    数据库设计开发规范
    .Net 项目代码风格
    用JS获取地址栏参数的方法(超级简单)
    Ajax轮询 select循环输出
    【Jquery】jquery刷新页面(局部及全页面刷新)
    网页上 滚动代码 最简单的
    eazyui 或bootstrap table表格里插入图片,点击查看大图
  • 原文地址:https://www.cnblogs.com/snailclimb/p/9086393.html
Copyright © 2011-2022 走看看