Advertisement
jinhuang1102

165. Compare Version Numbers

Jan 19th, 2019
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.69 KB | None | 0 0
  1. """
  2. 165. Compare Version Numbers
  3. 1.用快慢指针把两组 version number 转化成纯数字并放到queue中这样方便后面的诸位比较。
  4. 2.用while loop同步比较两个queue,如果比出大小就直接返回。
  5. 3.经过loop之后剩下的queue在检查里面是不是都为‘0’,哪个非0,哪个大。
  6. """
  7. class Solution(object):
  8.     def decoding(self, s):
  9.         q = collections.deque()
  10.        
  11.         fast = 0
  12.         slow = -1
  13.         while fast < len(s):
  14.             if slow == -1:
  15.                 if s[fast] != '.':
  16.                     slow = fast
  17.             else:
  18.                 if s[fast] == '.':
  19.                     val = int(s[slow:fast])
  20.                     q.append(val)
  21.                     slow = -1
  22.                    
  23.             fast += 1
  24.        
  25.         if fast == len(s) and slow != -1:
  26.             q.append(int(s[slow:]))
  27.            
  28.         return q
  29.    
  30.     def valid(self, ls):
  31.         i = 0
  32.         while i < len(ls):
  33.             if ls[i] != 0:
  34.                 return True
  35.             i += 1
  36.         return False
  37.            
  38.    
  39.     def compareVersion(self, version1, version2):
  40.         """
  41.        :type version1: str
  42.        :type version2: str
  43.        :rtype: int
  44.        """
  45.         q1 = self.decoding(version1)
  46.         q2 = self.decoding(version2)
  47.        
  48.         while q1 and q2:
  49.             v1 = q1.popleft()
  50.             v2 = q2.popleft()
  51.            
  52.             if v1 > v2:
  53.                 return 1
  54.             elif v1 < v2:
  55.                 return -1
  56.        
  57.         if q1 and self.valid(q1):
  58.             return 1
  59.        
  60.         if q2 and self.valid(q2):
  61.             return -1
  62.        
  63.         return 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement