Go(Golang)中一组字符串中找出最长共同前缀的方法

298 阅读1分钟

概述

给出一个字符串数组。其目的是从该字符串数组中找出最长的共同前缀。 如果没有共同的前缀,它应该输出一个空字符串。

例子1

Input: ["fan", "fat", "fame"]
Output: "fa"

例子2

Input: ["bat", "van", "cat"]
Output: ""

程序

以下是相同的程序

package main

import "fmt"

func longestCommonPrefix(strs []string) string {
	lenStrs := len(strs)

	if lenStrs == 0 {
		return ""
	}

	firstString := strs[0]

	lenFirstString := len(firstString)

	commonPrefix := ""
	for i := 0; i < lenFirstString; i++ {
		firstStringChar := string(firstString[i])
		match := true
		for j := 1; j < lenStrs; j++ {
			if (len(strs[j]) - 1) < i {
				match = false
				break
			}

			if string(strs[j][i]) != firstStringChar {
				match = false
				break
			}

		}

		if match {
			commonPrefix += firstStringChar
		} else {
			break
		}
	}

	return commonPrefix
}

func main() {
	output := longestCommonPrefix([]string{"fan", "fat", "fame"})
	fmt.Println(output)

	output = longestCommonPrefix([]string{"bat", "van", "cat"})
	fmt.Println(output)
}

输出。

"fa"
""