轻松一下:旨在学习小伙伴还有哪些巧妙的办法~
面试题是这样的描述:
给出2个路径,A路径,A路径的子路径B,如何从A路径回退到B路径
举个例子
输入:
B路径: /home/centos/gopath/src
A路径: /home/centos/gopath/src/github.com/hyperledger/fabric
输出:
../../../
这个是我写的版本(Golang) 这里忽略其他边界条件和异常情况。只考虑正常的算法流程
package main
import (
"fmt"
)
/*
输入:
/home/centos/gopath/src
/home/centos/gopath/src/github.com/hyperledger/fabric
输出:
../../../
*/
func main() {
var subPath string
var path string
subPath = "/home/centos/gopath/src"
path = "/home/centos/gopath/src/github.com/hyperledger/fabric"
res := filePath(path,subPath)
fmt.Println(res)
}
func filePath(str,substr string) string {
strlen := len(str)
var i int
var res string
for str[0:i]!=substr {
i++
}
leftstr := str[i:strlen]
strsublen := len(leftstr)
var count int
for i=0;i<strsublen;i++ {
if leftstr[i] =='/' {
count++
}
}
for i:=0;i<count;i++ {
res = res + "../"
}
return res
}