天天看点

【C语言】LeetCode 165. Compare Version Numbers题目:解答:

题目:

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      

解答:

int compareVersion(char* version1, char* version2) {
	int lenversion1 = strlen(version1);
	int lenversion2 = strlen(version2);
	int i = 0;
	int j = 0;
	int num1 = 0;
	int num2 = 0;

	while (i < lenversion1 || j < lenversion2)
	{
		while (i < lenversion1&&version1[i] != '.')
		{
			num1 = 10 * num1 + version1[i]-'0';
			i++;
		}

		while (j < lenversion2 && version2[j] != '.')
		{
			num2 = 10 * num2 + version2[j]-'0';
			j++;
		}

		if (num1>num2)return 1;
		else if (num1 < num2)return -1;
		i++;
		j++;
		num1 = 0;
		num2 = 0;
	}
	return 0;
}