位元組跳動第四場筆試演算法題——簡化路徑
阿新 • • 發佈:2018-12-11
題目
一個unix格式的路徑, 將其簡化
例如
/a/
//簡化結果為: /a
/a/././b/../../c
簡化結果為:/c
我的答案
看到這種字串一類的題目, 就忍不住想用正則表示式完成, 如下
function getPath(str) { let reg1 = /\.\//g let reg2 = /(\/){2,}/g let reg3 = /\./g str = str.replace(reg1, '').replace(reg2, '/').replace(reg3, '../') let reg4 = /\.\.\//g let reg6 = /[a-z]+\/\.\.\// let str1 = str while (reg4.exec(str)){ str1 = str1.replace(reg6, '') } str = str1.replace(/(\/$)/, '') console.log(str) return str } let str = '/a/././b//../../c/' getPath(str)
假裝結尾
最開始我在正則中使用了“?=”, 但是一直匹配不成功。這裡丟擲一個問題, 如果誰會, 還請告知一下。
console.log(/(?=^a)bd/.test('abd,bcd'))//為什麼會打印出false
最後正則表示式還是很有必要學習一下的。