Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Viết hàm strcmp() bỏ qua chữ hoa thường C++

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