165.go 792 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. package main
  2. import (
  3. "strconv"
  4. )
  5. func compareVersion(version1 string, version2 string) int {
  6. idx1, idx2 := 0, 0
  7. for idx1 < len(version1) || idx2 < len(version2) {
  8. part1 := nextPartOfVersion(version1, &idx1)
  9. part2 := nextPartOfVersion(version2, &idx2)
  10. if part1 < part2 {
  11. return -1
  12. } else if part1 > part2 {
  13. return 1
  14. }
  15. }
  16. return 0
  17. }
  18. func nextPartOfVersion(version string, beg *int) int {
  19. length := len(version)
  20. if *beg >= length {
  21. return 0
  22. }
  23. var end int
  24. for end = *beg + 1; end < length; end++ {
  25. if version[end] == '.' {
  26. break
  27. }
  28. }
  29. val, _ := strconv.Atoi(version[*beg:end])
  30. *beg = end + 1
  31. return val
  32. }
  33. // func main() {
  34. // println(compareVersion("1.0.1", "1"))
  35. // println(compareVersion("1.0.1", "2"))
  36. // println(compareVersion("1.0.0.0", "1"))
  37. // }