给定两个字符串s1和s2 ,任务是编写 C 程序比较这两个字符串而不使用 strcmp()函数。如果字符串相等则打印“Equal 字符串”,否则打印“Unequal 字符串” 。
例子:
Input: s1 = “geeksforgeeks”, s2 = “geeks”
Output: Uequal Strings
Input: s1 = “geeksforgeeks”, s2 = “geeksforgeeks”
Output: Equal Strings
方法:当我们比较两个字符串时,可能会出现三种情况:
- 两个字符串相同意味着两个字符串之间的ASCII值差异为0 。
- 两个字符串不同意味着第一个字符串中第一个不匹配字符的ASCII值小于第二个字符串,则两个字符串之间的差异为(<0) 。
- 两个字符串不同意味着第一个字符串中第一个不匹配字符的ASCII值大于第二个字符串,则两个字符串之间的差异为(>0) 。
基于以上三个条件,想法是每当条件 2 或 3 出现时,将给定字符串的每个字符一个一个比较,然后打印“不等字符串”,否则打印“等字符串” 。
下面是上述方法的实现:
C
// C program to compare the two strings
// without using strcmp() function
#include
// Function that compares the two string
void compareStrings(char* x, char* y)
{
int flag = 0;
// Iterate a loop till the end
// of both the strings
while (*x != '\0' || *y != '\0') {
if (*x == *y) {
x++;
y++;
}
// If two characters are not same
// print the difference and exit
else if ((*x == '\0' && *y != '\0')
|| (*x != '\0' && *y == '\0')
|| *x != *y) {
flag = 1;
printf("Uequal Strings\n");
break;
}
}
// If two strings are exactly same
if (flag == 0) {
printf("Equal Strings\n");
}
}
// Driver Code
int main(void)
{
// Given strings s1 and s2
char s1[20] = "python";
char s2[20] = "dsa";
// Function Call
compareStrings(s1, s2);
return 0;
}
输出:
Uequal Strings
时间复杂度: O(N)
辅助空间: O(1)
想要从精选的视频和练习题中学习,请查看C 基础到高级C 基础课程。