Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

उन शब्दों की संख्या जिनका i-th अक्षर या तो (i-1)-th, i-th, या (i+1)-C++ में दिए गए शब्द का अक्षर है

हमें इनपुट के रूप में एक स्ट्रिंग str[] दी गई है। लक्ष्य str[] से शब्दों को गिनना है जिनकी लंबाई str[] के समान है और अक्षरों की स्थिति है जैसे कि ith अक्षर को स्थिति (i1) या (i) या (i+1) पर अक्षर से बदल दिया जाता है।

पहले अक्षर के लिए प्रतिस्थापन स्थिति i या i+1 से होगा

अंतिम अक्षर के लिए प्रतिस्थापन स्थिति i-1 या i से होगा।

आइए उदाहरणों से समझते हैं।

इनपुट - str[] ="टीपीपी"

आउटपुट - उन शब्दों की संख्या जिनका i-th अक्षर या तो (i-1)-th, i-th, या (i+1)-दिए गए शब्द का अक्षर है − 4

स्पष्टीकरण

Replacing T by T (i)th or 1st P (i+1)th = TPP, PPP
Replacing 1st P by T (i-1)th, P (i)th, or P(i+1)th = TTP, TPP, TPP
Replacing 2nd P by P(i-1)th or P(i)th = TPP, TPP
Unique combination of replacements: TPP, PPP, TTP, PTP

इनपुट - str ="आआ"

आउटपुट - उन शब्दों की संख्या जिनका i-th अक्षर या तो (i-1)-th, i-th, या (i+1)- दिए गए शब्द का अक्षर है:1

स्पष्टीकरण

Replacing a by a (i)th or 2nd a (i+1)th = aaa, aaa
Replacing 2nd a by a (i-1)th, a (i)th, or a(i+1)th = aaa, aaa, aaa
Replacing 3rd a by a(i-1)th or a(i)th = aaa, aaa
Unique combination of replacements: aaa

नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है

हम जानते हैं कि प्रत्येक अक्षर के लिए हमारे पास तीन संभावनाएं हैं। यदि वर्तमान अक्षर i के लिए, सभी (i-1)th, ith, (i+1)th अलग हैं तो हमारे पास 3 विकल्प हैं। यदि दो समान हैं तो हमारे पास 2 विकल्प हैं, यदि सभी समान हैं तो केवल एक ही विकल्प है।

तो हम स्ट्रिंग को पार करेंगे और विशिष्टता की जांच करेंगे और अक्षरों के अनुसार 3, 2 या 1 से गुणा करेंगे। पहले और आखिरी अक्षर के लिए, हम विशिष्टता की जांच करेंगे और इसी तरह से 2 या 1 से गुणा करेंगे।

  • स्ट्रिंग str[] को एक वर्ण सरणी के रूप में लें।

  • फंक्शन टोटल (चार स्ट्र [], इंट लेंथ) स्ट्रिंग लेता है और उन शब्दों की गिनती लौटाता है जिनका i-th अक्षर या तो (i-1)-th, i-th, या (i+1)-th अक्षर दिया गया है str[] में शब्द।

  • प्रारंभिक गणना को 1 के रूप में लें। शब्द str[] में ही है।

  • अगर एक अक्षर है, तो लंबाई 1 होगी, वापसी 1.

  • सूचकांक 0 पर पहले अक्षर की जाँच करें। यदि यह दूसरे के समान है तो str[0]==str[1] फिर 1 से गुणा करें

  • यदि वे भिन्न हैं तो 2 से गिनें गुणा करें।

  • अब लूप के लिए इंडेक्स i=1 से i

  • सूचकांक में प्रत्येक अक्षर के लिए i. जांचें कि क्या str [i] str [i-1] या str [i + 1] जैसा ही है। अगर हाँ, तो गिनती को 1 से गुणा करें।

  • यदि कोई दो समान हैं, तो 2 से गुणा करें।

  • अन्यथा 3 से गुणा करें।

  • अंतिम वर्ण के लिए, जांचें कि क्या str[i-1]==str[i]. अगर सही है, तो गिनती को 1 से गुणा करें। वरना 2 से गुणा करें

  • अंत में हमारे पास ऐसे विशिष्ट शब्दों की गिनती होगी।

  • परिणाम के रूप में वापसी की गिनती।

उदाहरण

#include<bits/stdc++.h>
using namespace std;
int total(char str[], int length){
   int count = 1;
   if (length == 1){
      return count;
   }
   if (str[0] == str[1]){
      count = count * 1;
   }
   else{
      count = count * 2;
   }
   for (int j=1; j<length-1; j++){
      if (str[j] == str[j-1] && str[j] == str[j+1]){
         count = count * 1;
      }
      else if (str[j] == str[j-1]){
         count = count * 2;
      }
      else if(str[j] == str[j+1]){
         count = count * 2;
      }
      else if(str[j-1] == str[j+1]){
         count = count * 2;
      }
      else{
         count = count * 3;
      }
   }
   if (str[length - 1] == str[length - 2]){
      count = count * 1;
   }
   else{
      count = count * 2;
   }
   return count;
}
int main(){
   char str[] = "TPP";
   int length = strlen(str);
   cout<<"Count of words whose i-th letter is either (i-1)-th, i-th, or (i+1)-th letter of given word
are: "<<total(str, length) << endl;
   return 0;
}

आउटपुट

यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा -

Count of words whose i-th letter is either (i-1)-th, i-th, or (i+1)-th letter of given word are: 4

  1. एक क्रमबद्ध दोगुनी लिंक की गई सूची में ट्रिपल की गणना करें जिसका योग C++ में दिए गए मान x के बराबर है

    उदाहरण के लिए इनपुट linked list: [ 3−4−13−5−10−10−0 ] x=20 आउटपुट Count of triplets in a sorted doubly linked list whose product is equal to a given value x are: 2 स्पष्टीकरण Triplets will be: ( 3,4,13 ) and ( 10,10,0 ) इनपुट linked list: [ 4−3−1&minu

  1. एक क्रमबद्ध डबल लिंक्ड सूची में ट्रिपल गिनें जिसका उत्पाद सी ++ में दिए गए मान x के बराबर है

    पूर्णांक मानों वाली एक क्रमबद्ध डबल लिंक्ड सूची को देखते हुए। लक्ष्य उन त्रिगुणों को खोजना है जिनका गुणनफल दिए गए मान x के बराबर है। यदि इनपुट लिंक्ड सूची 3−4−1−2 है और x 6 है तो गिनती 1 (ट्रिपलेट (3,1,2)) होगी उदाहरण के लिए इनपुट linked list: [ 200−4−16−5−10−10&min

  1. दो बीएसटी से जोड़े की गणना करें जिनकी राशि सी ++ में दिए गए मान x के बराबर है

    हमें इनपुट के रूप में दो बाइनरी सर्च ट्री और एक वेरिएबल x दिया गया है। लक्ष्य प्रत्येक पेड़ से नोड्स के जोड़े को ढूंढना है ताकि नोड्स के मूल्य का योग x के बराबर हो। BST_1 से नोड 1 और BST_2 से नोड 2 लें और दोनों का डेटा भाग जोड़ें। यदि योग =x. वेतन वृद्धि की संख्या। आइए उदाहरणों से समझते हैं। इनपुट