LETCODE 165

来源:互联网 发布:淘宝权女友辣椒和静雯 编辑:程序博客网 时间:2024/04/28 07:36

Compare two version numbers version1 and version2.
If version1 > version2 return 1, if version1 < version2 return -1, otherwise return 0.

You may assume that the version strings are non-empty and contain only digits and the . character.
The . character does not represent a decimal point and is used to separate number sequences.
For instance, 2.5 is not "two and a half" or "half way to version three", it is the fifth second-level revision of the second first-level revision.

Here is an example of version numbers ordering:

0.1 < 1.1 < 1.2 < 13.37

需要注意的问题:

(1)可能会出现1.0 = 1

(2)可能会出现1.1.1.1.1即多个点。

思路:

从非‘ .’开始,逐个取出字符并转化为数字比较:

class Solution {public:int compareVersion(string version1, string version2) {int temp1, temp2;int pos1 = 0, pos2 = 0;while (pos1 < version1.length() || pos2 < version2.length()) {temp1 = 0; while (pos1 < version1.length()) {if (version1[pos1] == '.') {++pos1;break;}temp1 = temp1 * 10 + (version1[pos1] - '0');++pos1;}temp2 = 0; while (pos2 < version2.length()) {if (version2[pos2] == '.') {++pos2;break;}temp2 = temp2 * 10 + (version2[pos2] - '0');++pos2;}if (temp1 > temp2) return 1;if (temp1 < temp2) return -1;}return 0;}};


0 0