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

Đếm số từ palindrome trong một câu bằng C ++

Chúng tôi được cung cấp một chuỗi có chứa một câu tiếng Anh. Mục đích là để tìm số từ trong chuỗi là palindromes. Các từ Palindrome là những từ mà khi đọc từ đầu hoặc cuối có cùng một trình tự bảng chữ cái. Nếu câu là “Madam nói tiếng Malayalam tốt” thì số từ palindrome là 2 (Madam và Malayalam)

Lưu ý - Các từ có thể chứa cả bảng chữ cái viết hoa và viết thường.

Hãy cho chúng tôi hiểu với các ví dụ.

Đầu vào - str ="Mẹ tôi và Anna đã rời đi vào buổi trưa";

Đầu ra - Số từ palindrome trong một câu là - 3

Giải thích - Các từ Palindrome trong câu trên là - Mom, Anna and Noon. (không phân biệt các trường hợp của bảng chữ cái)

Đầu vào - str =“Tôi đang ở cấp 121 trong trò chơi Xe đua”

Đầu ra - Số từ palindrome trong một câu là - 4

Giải thích - Các từ Palindrome trong câu trên là - I, level, 121, Racecar. (không phân biệt các trường hợp của bảng chữ cái)

Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau

Chúng ta sẽ lấy từng từ sau dấu cách ““ trong câu và chuyển nó cho một hàm. Hàm biến đổi ký tự của các từ thành chữ thường. Bây giờ bắt đầu duyệt từ ký tự đầu tiên của từ và so sánh từ [0] với từ [length-1], từ [1] với từ [length-2], v.v. Nếu bất kỳ sự không phù hợp nào xảy ra, vòng lặp khác trả về true.

  • Lấy một mảng chuỗi str [] có chứa một câu.

  • Kiểm tra hàm (thêm chuỗi) nhận một chuỗi và trả về true nếu chuỗi là palindrome khác trả về false.

  • Tính độ dài của chuỗi extra như len =extra.lenght ().

  • Chuyển toàn bộ chuỗi thành chữ thường bằng cách sử dụng (extra.begin (), extra.end (), extra.begin (), ::tolower);

  • Bắt đầu duyệt từ chỉ mục 0 của từ cho đến chỉ mục

  • So sánh thêm [i] ==phụ [len-1]. Nếu không khớp xảy ra, trả về false. Trả lại true.

  • Hàm palindrome (string str, int length) nhận một câu và độ dài của nó và trả về số lượng từ palindrome trong đó.

  • Lấy số lượng ban đầu là 0.

  • Lấy thêm chuỗi tạm thời =”” để chọn và lưu trữ các từ riêng lẻ.

  • Bắt đầu duyệt qua câu bằng vòng lặp for từ chỉ mục 0 cho đến i

  • Lấy ký tự tạm thời temp =str.ar (i).

  • Nếu tạm thời không phải là khoảng trắng, hãy thêm nó vào khoảng trống để tạo thành một từ.

  • Nếu tạm thời không phải là khoảng trắng thì if (kiểm tra (thêm)) trả về số gia tăng thực sự.

  • Kiếm thêm =”” một lần nữa.

  • Lần đếm cuối cùng sẽ có tổng số từ palindrome.

  • Kết quả là số lượt trả lại.

Ví dụ

#include <bits/stdc++.h>
using namespace std;
bool check(string extra){
   int len = extra.length();
   transform(extra.begin(), extra.end(), extra.begin(), ::tolower);
   for (int i = 0; i < len; i++,len--){
      if (extra.at(i) != extra.at(len - 1)){
         return false;
      }
   }
   return true;
}
int palindrome(string str, int length){
   int count = 0;
   string extra = "";
   for (int i = 0; i < length; i++){
      char temp = str.at(i);
      if (temp != ' '){
         extra = extra + temp;
      }
      else{
         if (check(extra))
            { count++; }
         extra = "";
      }
   }
   return count;
}
int main(){
   string str = "nitin wants nitin for his company named nitin after nitin";
   str = str + " ";
   int length = str.length();
   cout<<"Count of palindrome words in a sentence are: "<<palindrome(str, length)<<endl;
   return 0;
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

Count of palindrome words in a sentence are: 4