前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Dimple在左耳听风ARTS打卡(二十四)

Dimple在左耳听风ARTS打卡(二十四)

作者头像
程序员小跃
发布2019-12-25 22:32:11
8680
发布2019-12-25 22:32:11
举报
文章被收录于专栏:程序员小跃

Android凉了?前段时间刚更新了新的Logo,换了新的叫法,现在Android 10终于向亲儿子系统进行了推送。更安全,更好,更强的版本来袭,他是真的凉了吗?

文中有Android 10的介绍地址,感兴趣的赶紧去看看呗。我们都希望第三个系统出来挑战现在的Android和iOS,争夺市场的份额。在没彻底出来之前,还是看看Android的改版,带给我们的是什么吧。

插播一条感慨:昨晚的中国队,浪费了杨超越的上上签。但是,上上签还没结束,希望这个签,能让我们顺利去明年的东京奥运。篮球,是五个人的运动,是一个TEAM,后续继续加油!

Algorithm LeetCode算法

反转字符串 (https://leetcode-cn.com/problems/reverse-string/)

题目描述:编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。

不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。

你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。

示例1:

代码语言:javascript
复制
输入:["h","e","l","l","o"]
输出:["o","l","l","e","h"]

示例2:

代码语言:javascript
复制
输入:["H","a","n","n","a","h"]
输出:["h","a","n","n","a","H"]

今天还是玩玩字符串的反转。咋一看这题,其实大家也知道了,难度并不大,我在这里想表达就是使用两种方式来进行解题。

方法一: 双指针解法。

使用while循环,初始化的时候,用i和j分别指向数组的第一个和最后一个元素。每次交换i和j两个位置的元素,然后将i向右,j向左往中间靠拢即可。

代码语言:javascript
复制
public static void reverseString1(char[] s) {
    if (s == null || s.length == 0) {
        return;
    }

    int i = -1;
    int j = s.length;
    while ( i++ < --j) {
        swap1(s, i, j);
    }

    for (char c : s) {
        System.out.println(c);
    }
}

// 交换元素
public static void swap1(char[] s,int i, int j) {
    char x = s[i];
    s[i] = s[j];
    s[j] = x;
}

方法二: 递归

又是熟悉的递归,在算法里,递归真的是无处不在,用得好非常好,用的不好,那还得小心堆栈溢出的情况。

这里其实和方法一的思路差不多,就是方法一用的是while循环获取元素,在递归这里,我们让递归自己进行数组位置的移动,也是都往中间跑。

代码语言:javascript
复制
public static void reverseString(char[] s) {
    if (s == null || s.length == 0) {
        return;
    }

    int i = 0;
    int j = s.length;
    swap(s, i, j - 1);
}

// 使用递归交换元素
public static void swap(char[] s,int i,int j) {
    if (i >= j) {
        return;
    }
    char x = s[i];
    s[i] = s[j];
    s[j] = x;
    swap(s, i + 1, j - 1);
}

大致上就是这两种方法即可。因为只能在当前数组上进行修改,所以交换元素肯定是必经之路了。唯一变化的就是元素如何获取,方法一用的循环,方法二用的递归,大家知道性能上哪个好一些么?欢迎留言区给我答案。小编晚点再公布。

Review 阅读并点评至少一篇英文文章

Android 10: Everything you need to know! (https://www.androidcentral.com/android-10)

Android 10 揭开了它最终的面纱,今天正式版已经问世了。现在的Android发展,也越来越好,虽然很多人都觉得它凉了,但是小编不这么认为。

目前的Android虽然已经过了高速发展的时期,但也还是在巅峰期,这个巅峰谁也不知道持续多久,但是更进一步的发展,Google一直在努力,一直在进化,一直在向开发者,用户等提供更好的版本,更好的体验。

文中介绍了Android新的几大特性,而且还能看到新的清爽的Logo,以及更安全的系统。感兴趣的,可以看看这个地址给的新版的介绍。如果你手上是亲儿子的手机,那么恭喜你,静静地等待推送更新吧。

Tip 一个技术技巧

在第二十二期的时候,我们介绍了Linux常用命令的其中5种,忘记的同学,可以去看看Dimple在左耳听风ARTS打卡(二十二)

今天,我们继续介绍5个常用的Linux命令。

  1. awk删除重复行
代码语言:javascript
复制
$ awk '!($0 in array) { array[$0]; print}' temp
打印/etc/passwd中所有包含同样的uid和gid的行
代码语言:javascript
复制
$ awk -F ':' '$3=$4' /etc/passwd
打印文件中的指定部分的字段
代码语言:javascript
复制
$ awk '{print $2,$5;}' employee.txt
  1. vim打开文件并跳到第10行
代码语言:javascript
复制
$ vim +10 filename.txt
打开文件跳到第一个匹配的行
代码语言:javascript
复制
$ vim +/search-term filename.txt
以只读模式打开文件
代码语言:javascript
复制
$ vim -R /etc/passwd
  1. diff比较的时候忽略空白符
代码语言:javascript
复制
$ diff -w name_list.txt name_list_new.txt
  1. sort以升序对文件内容排序
代码语言:javascript
复制
$ sort names.txt
以降序对文件内容排序
代码语言:javascript
复制
$ sort -r names.txt
以第三个字段对/etc/passwd的内容排序
代码语言:javascript
复制
$ sort -t: -k 3n /etc/passwd | more
  1. export输出跟字符串oracle匹配的环境变量
代码语言:javascript
复制
$ export | grep ORCALE
declare -x ORACLE_BASE="/u01/app/oracle"
declare -x ORACLE_HOME="/u01/app/oracle/product/10.2.0"
declare -x ORACLE_SID="med"
declare -x ORACLE_TERM="xterm"
设置全局环境变量
代码语言:javascript
复制
$ export ORACLE_HOME=/u01/app/oracle/product/10.2.0
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-09-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 奔跑吧攻城狮 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Algorithm LeetCode算法
  • Review 阅读并点评至少一篇英文文章
  • Tip 一个技术技巧
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档