Tạo hàm strcmp (so sánh chuỗi) bỏ qua chữ hoa/thường. Trả về -1 nếu str1 < str2, 0 nếu bằng, 1 nếu str1 > str2.
Ví dụ:
Input
string1 = "Hello", string2 = "hello"
Output
0
Cách làm: duyệt ký tự của hai chuỗi. Nếu cùng ký tự (bỏ qua case) thì tiếp tục. Dùng ASCII: 'a' (97) và 'A' (65) coi như bằng nhau. XOR 32 để chuyển đổi hoa/thường.
Ví dụ minh họa
#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 << "So sánh chuỗi bỏ qua hoa/thường:\n";
cout << "Kết quả: " << strcmpFunc("HELLO", "hello") << endl;
cout << "Kết quả: " << strcmpFunc("", "Hello") << endl;
cout << "Kết quả: " << strcmpFunc("Tutorials", "Pint") << endl;
cout << "Kết quả: " << strcmpFunc("afdadsa", "rewf") << endl;
cout << "Kết quả: " << strcmpFunc("tutorialspoint", "TUTORIALSpoint") << endl;
return 0;
}
Kết quả
So sánh chuỗi bỏ qua hoa/thường:
Kết quả: 0
Kết quả: -1
Kết quả: 1
Kết quả: -1
Kết quả: 0