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

C++ में सबसे लंबा पलिंड्रोम


मान लीजिए कि हमारे पास एक स्ट्रिंग है जिसमें लोअरकेस या अपरकेस अक्षर हैं, हमें उन अक्षरों के साथ बनाए जा सकने वाले सबसे लंबे पैलिंड्रोम की लंबाई का पता लगाना है। अब स्ट्रिंग केस संवेदी है, इसलिए यहां "आ" को पैलिंड्रोम नहीं माना जाता है।

इसलिए, यदि इनपुट "abccccdd" जैसा है, तो आउटपुट 7 होगा, क्योंकि एक सबसे लंबा पैलिंड्रोम जिसे बनाया जा सकता है वह है "dccaccd", जिसकी लंबाई 7.

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • एक नक्शा एमपी परिभाषित करें

  • प्रत्येक वर्ण के लिए मैं s

    . में
    • (एमपी[i] 1 से बढ़ाएं)

  • मा:=0, सी:=0, उत्तर:=0

  • एमपी में प्रत्येक की-वैल्यू पेयर i के लिए

    • अगर imod 2 का मान 1 के समान है, तो -

      • (मा को 1 से बढ़ाएं)

    • c :=c + i का मान

  • अगर मा> 0, तो -

    • (मा को 1 से घटाएं)

  • Ans :=c - ma

  • वापसी उत्तर

उदाहरण

आइए एक बेहतर समझ प्राप्त करने के लिए निम्नलिखित कार्यान्वयन देखें -

#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
   int longestPalindrome(string s) {
      unordered_map<char, int> mp;
      for (auto i : s)
         mp[i]++;
      int ma = 0, c = 0, ans = 0;
      for (auto i : mp) {
         if ((i.second) % 2 == 1)
            ma++;
         c += i.second;
      }
      if (ma > 0)
         ma--;
      ans = c - ma;
      return ans;
   }
};
main(){
   Solution ob;
   cout << (ob.longestPalindrome("abccccdd"));
}

इनपुट

"abccccdd"

आउटपुट

7

  1. C++ में सबसे लंबा अशांत सबरे

    एक उपसरणी पर विचार करें A[i], A[i+1], ..., A[j] of A को अशांत कहा जाता है जब वह इन शर्तों को पूरा करता है - i <=k A[k+1] के लिए जब k विषम हो, और A[k]

  1. सी++ में प्राइम पलिंड्रोम

    मान लीजिए हमें सबसे छोटा अभाज्य पैलिंड्रोम खोजना है जो N से बड़ा या उसके बराबर है। इसलिए यदि N 13 है, तो सबसे छोटा पैलिंड्रोम 101 होगा। इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - अगर N 8 से 11 की सीमा में है, तो 11 लौटाएं मैं के लिए 1 से 99999 की सीमा में s :=i एक स्ट्रिंग के रूप में

  1. C++ में एक पालिंड्रोम तोड़ें

    मान लीजिए कि हमारे पास एक पैलिंड्रोमिक स्ट्रिंग पैलिंड्रोम है, हमें ठीक एक वर्ण को किसी भी लोअरकेस अंग्रेजी अक्षर से बदलना होगा ताकि स्ट्रिंग लेक्सिकोग्राफ़िक रूप से सबसे छोटी संभव स्ट्रिंग बन जाए जो पैलिंड्रोम नहीं है। अब ऐसा करने के बाद, हमें अंतिम स्ट्रिंग ढूंढनी होगी। यदि ऐसा करने का कोई तरीका न