Computer >> Máy Tính >  >> Lập trình >> C ++

Viết strcmp của riêng bạn bỏ qua các trường hợp trong C ++

Ở đây, chúng ta phải tạo một hàm strcmp (so sánh chuỗi) để so sánh hai chuỗi nhưng bỏ qua các trường hợp của các ký tự trong chuỗi. Hàm sẽ trả về -1 nếu string1 string2.

Hãy lấy một ví dụ để hiểu vấn đề,

Đầu vào

string1 = “Hello” , string2 = “hello”

Đầu ra

0

Để tạo hàm strcmp của riêng chúng ta bỏ qua các trường hợp trong khi so sánh các chuỗi. Chúng tôi sẽ lặp qua tất cả các ký tự của cả hai chuỗi, nếu các ký tự ở chỉ mục thứ i giống nhau, tức là string1 [i] ==string2 [i], hãy tiếp tục. Nếu string1 [i]> string2 [i], trả về 1. Nếu string1 [i]

Ở đây, chúng ta phải bỏ qua các trường hợp, vì vậy A và a sẽ được coi là như nhau. Chúng tôi sẽ sử dụng các giá trị ASCII của các ký tự, sau đó ASCII cho a =97 sẽ bằng ASCII của A =65.

Chương trình cho thấy việc triển khai giải pháp của chúng tôi,

Ví dụ

#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;
}

Đầu ra

Compareing string using our strcmp function −
Result: 0
Result: -1
Result: 1
Result: -1
Result: 0