Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 문장의 회문 단어 계산

<시간/>

영어 문장이 포함된 문자열이 제공됩니다. 목표는 문자열에서 회문인 단어의 수를 찾는 것입니다. 회문 단어는 처음부터 읽거나 끝에서 읽을 때 동일한 알파벳 순서를 갖는 단어입니다. 문장이 "Madam speak good Malayalam"인 경우 회문 단어 수는 2입니다. (Madam and Malayalam)

참고 − 단어는 대문자와 소문자를 모두 포함할 수 있습니다.

예를 들어 이해합시다.

입력 − str ="엄마와 안나는 정오에 출발했습니다";

출력 − 문장에서 회문 단어의 수는 − 3입니다.

설명 − 위 문장의 회문은 − Mom, Anna, Noon입니다. (알파벳 상관없음)

입력 − str="레이스카 게임의 레벨 121입니다."

출력 − 문장에서 회문 단어의 수는 − 4입니다.

설명 − 위 문장의 회문 단어는 − I, level, 121, Racecar입니다. (알파벳 상관없음)

아래 프로그램에서 사용된 접근 방식은 다음과 같습니다.

문장에서 공백 " " 뒤의 각 단어를 가져와서 함수에 전달합니다. 이 함수는 단어의 문자를 소문자로 변환합니다. 이제 단어의 첫 번째 문자에서 순회를 시작하고 word[0]과 word[length-1], word[1]을 word[length-2] 등과 비교하는 식으로 시작합니다. 불일치가 발생하면 루프를 중단하고 true를 반환합니다.

  • 문장이 포함된 문자열 배열 str[]을 가져옵니다.

  • 함수 check(string extra)는 문자열을 받아 문자열이 회문이면 true를 반환하고 그렇지 않으면 false를 반환합니다.

  • len=extra.lenght()로 추가 문자열의 길이를 계산합니다.

  • (extra.begin(), extra.end(), extra.begin(), ::tolower);

    를 사용하여 전체 문자열을 소문자로 변환합니다.
  • for 루프를 사용하여 index

  • extra[i]==extra[len-1]을 비교합니다. 불일치가 발생하면 false를 반환합니다. 그렇지 않으면 true를 반환합니다.

  • 함수 회문(문자열 str, int 길이)은 문장과 문장의 길이를 가져와 회문 단어의 수를 반환합니다.

  • 초기 카운트를 0으로 합니다.

  • 임시 문자열 extra=""를 사용하여 개별 단어를 선택하고 저장합니다.

  • 인덱스 0에서 i까지 for 루프를 사용하여 문장 탐색을 시작합니다.

  • 임시 문자 temp=str.ar(i)를 가져옵니다.

  • temp가 공백이 아닌 경우 extra에 추가하여 단어를 만듭니다.

  • temp가 공백이 아닌 경우 if (check(extra))는 실제 증가 횟수를 반환합니다.

  • extra=""를 다시 만드십시오.

  • 마지막 카운트에는 총 회문 단어 수가 있습니다.

  • 결과로 카운트를 반환합니다.

예시

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

출력

위의 코드를 실행하면 다음 출력이 생성됩니다 -

Count of palindrome words in a sentence are: 4