设计顺序串上实现串比较运算Strcmp(s,t)的算法。
算法思路:
1)比较s和t两个串共同长度范围内的对应字符:
- 若s的字符 > t的字符,返回 1
- 若s的字符 < t的字符,返回 - 1
- 若s的字符 = t的字符,返回 0
2)若是相等的情况,则继续比较s和t的长度 - 两者相等时,返回 0
- s的长度 > t的长度 , 返回 1
- s的长度 < t的长度 , 返回 -1
代码实现
#include <stdio.h>
#include <iostream>
using namespace std;
int Strcmp(string x , string y)
{
int len1 = x.length();
int len2 = y.length();
int flag = 0;
int minlen = 0;
if(len1>len2) //取最小的公共部分的长度
minlen = len2;
else
minlen = len1;
for(int i=0;i<minlen;i++)
if(x[i] > y[i])
return 1;
else if(x[i] < y[i])
return -1;
if(x.length()==y.length()) //比较两个字符串的大小
return 0;
else if (x.length()>y.length())
return 1;
else
return -1;
}
int main ()
{
string x = "ab";
string y = "abcd";
cout<<Strcmp(x,y)<<" ";
return 0;
}
运行结果: -1