编写一个可以在 C++ 中忽略大小写的 strcmp
我们需要编写的 strcmp(字符串比较)函数在比较两个字符串时应忽略大小写。若字符串1 < 字符串2,函数返回 -1;若字符串1 = 字符串2,函数返回 0;若字符串1 > 字符串2,函数返回 1。
让我们举个例子来理解这个问题:
输入
string1 = “Hello” , string2 = “hello”
输出
0
要编写我们的 strcmp 函数,需要在比较字符串时忽略大小写。我们要遍历两个字符串中的所有字符,如果这两个字符串中第 i 个索引处的字符相同,即 string1[i] == string2[i],则继续。如果 string1[i] > string2[i],则返回 1。如果 string1[i] < string2[i],则返回 -1。如果字符串结束了,则返回 0。
这里,我们需要忽略大小写,所以 A 和 a 将被视为相同。我们将使用字符的 ASCII 值,比如 a 的 ASCII 值 97 等于 A 的 ASCII 值 65。
程序来展示我们解决方案的实现:
示例
#include <iostream>
using namespace std;
int strcmpFunc(string string1, string string2){
int i;
for (i = 0; string1[i] && string2[i]; ++i){
if (string1[i] == string2[i] || (string1[i] ^ 32) == string2[i])
continue;
else
break;
}
if (string1[i] == string2[i])
return 0;
if ((string1[i] | 32) < (string2[i] | 32))
return -1;
return 1;
}
int main(){
cout<<"Compareing string using our strcmp function :\n";
cout<<"Result: "<<strcmpFunc("HELLO", "hello")<<endl;
cout<<"Result: "<<strcmpFunc("", "Hello")<<endl;
cout<<"Result: "<<strcmpFunc("Tutorials", "Pint")<<endl;
cout<<"Result: "<<strcmpFunc("afdadsa", "rewf")<<endl;
cout<<"Result: "<<strcmpFunc("tutorialspoint", "TUTORIALSpoint")<<endl;
return 0;
}输出
Compareing string using our strcmp function − Result: 0 Result: -1 Result: 1 Result: -1 Result: 0
广告
数据结构
计算机网络
关系数据库管理系统
操作系统
Java 编程语言
iOS
HTML
CSS
Android
Python
C 编程语言
C++
C#
MongoDB
MySQL
Javascript
PHP