一道关于路径的面试题

125 阅读1分钟

轻松一下:旨在学习小伙伴还有哪些巧妙的办法~

面试题是这样的描述:

给出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
}