Dimple在左耳聽風ARTS打卡(二十四)
- 2019 年 12 月 25 日
- 筆記
Android涼了?前段時間剛更新了新的Logo,換了新的叫法,現在Android 10終於向親兒子系統進行了推送。更安全,更好,更強的版本來襲,他是真的涼了嗎?
文中有Android 10的介紹地址,感興趣的趕緊去看看唄。我們都希望第三個系統出來挑戰現在的Android和iOS,爭奪市場的份額。在沒徹底出來之前,還是看看Android的改版,帶給我們的是什麼吧。
插播一條感慨:昨晚的中國隊,浪費了楊超越的上上籤。但是,上上籤還沒結束,希望這個簽,能讓我們順利去明年的東京奧運。籃球,是五個人的運動,是一個TEAM,後續繼續加油!

Algorithm LeetCode演算法
反轉字元串 (https://leetcode-cn.com/problems/reverse-string/
)
題目描述:編寫一個函數,其作用是將輸入的字元串反轉過來。輸入字元串以字元數組 char[] 的形式給出。
不要給另外的數組分配額外的空間,你必須原地修改輸入數組、使用 O(1) 的額外空間解決這一問題。
你可以假設數組中的所有字元都是 ASCII 碼錶中的可列印字元。
示例1:
輸入:["h","e","l","l","o"] 輸出:["o","l","l","e","h"]
示例2:
輸入:["H","a","n","n","a","h"] 輸出:["h","a","n","n","a","H"]
今天還是玩玩字元串的反轉。咋一看這題,其實大家也知道了,難度並不大,我在這裡想表達就是使用兩種方式來進行解題。
方法一: 雙指針解法。
使用while循環,初始化的時候,用i和j分別指向數組的第一個和最後一個元素。每次交換i和j兩個位置的元素,然後將i向右,j向左往中間靠攏即可。
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循環獲取元素,在遞歸這裡,我們讓遞歸自己進行數組位置的移動,也是都往中間跑。
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命令。
- awk刪除重複行
$ awk '!($0 in array) { array[$0]; print}' temp 列印/etc/passwd中所有包含同樣的uid和gid的行
$ awk -F ':' '$3=$4' /etc/passwd 列印文件中的指定部分的欄位
$ awk '{print $2,$5;}' employee.txt
- vim打開文件並跳到第10行
$ vim +10 filename.txt 打開文件跳到第一個匹配的行
$ vim +/search-term filename.txt 以只讀模式打開文件
$ vim -R /etc/passwd
- diff比較的時候忽略空白符
$ diff -w name_list.txt name_list_new.txt
- sort以升序對文件內容排序
$ sort names.txt 以降序對文件內容排序
$ sort -r names.txt 以第三個欄位對/etc/passwd的內容排序
$ sort -t: -k 3n /etc/passwd | more
- export輸出跟字元串oracle匹配的環境變數
$ 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" 設置全局環境變數
$ export ORACLE_HOME=/u01/app/oracle/product/10.2.0