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

C++ में अक्षरों को शिफ्ट करना


मान लीजिए हमारे पास लोअरकेस अक्षरों की एक स्ट्रिंग S है, और एक पूर्णांक सरणी shifts है। एक अक्षर का शिफ्ट का मतलब वर्णमाला में अगला अक्षर है, z के लिए, यह a होगा। अब प्रत्येक shifts[i] = x के लिए, हम S के पहले i+1 अक्षरों को x बार शिफ्ट करना चाहते हैं। हमें S पर ऐसे सभी शिफ्ट लागू करने के बाद अंतिम स्ट्रिंग ढूंढनी है। तो यदि स्ट्रिंग "abc" है और shifts = [3,5,9], तो S के पहले 1 अक्षर को 3 से शिफ्ट करने के बाद, हमारे पास "dbc" होगा, S के पहले दो अक्षरों को 5 से शिफ्ट करने के बाद, हमारे पास "igc" होगा, और S के पहले 3 अक्षरों को 9 से शिफ्ट करने के बाद, हमारे पास "rpl" होगा, और यही उत्तर है।

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

  • i को शिफ्ट सरणी के आकार - 2 से 0 तक नीचे की ओर
    • shift[i] := shift[i] + shift[i + 1]
    • shift[i] := shift[i] mod 26
  • i को 0 से S के आकार - 1 तक की रेंज में
    • S[i] := ((S[i] - a का ASCII) + shifts[i] mod 26) + a का ASCII
  • S लौटाएं

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

उदाहरण

#include <bits/stdc++.h>
using namespace std;

class Solution {
public:
    string shiftingLetters(string S, vector<int>& shifts) {
        for(int i = shifts.size() - 2; i >= 0; i--){
            shifts[i] += shifts[i + 1];
            shifts[i] %= 26;
        }
        for(int i = 0; i < S.size(); i++) {
            S[i] = ( ((S[i] - 'a') + shifts[i]) % 26 + 'a');
        }
        return S;
    }
};

main(){
    vector<int> v = {3,5,9};
    Solution ob;
    cout << (ob.shiftingLetters("abc", v));
}

इनपुट

"abc" [3,5,9]

आउटपुट

rpl

  1. - C++ में एनकैप्सुलेशन (Encapsulation)

    एनकैप्सुलेशन क्या है? डेटा और उस डेटा को मैनिपुलेट करने वाले मेथड्स को एक ही घटक (क्लास) में बांधना और बाहरी हस्तक्षेप से बचाना। डेटा छिपाने (data hiding) की ओर ले जाता है। C++ में कार्यान्वयन क्लासेस (उपयोगकर्ता-परिभाषित डेटा प्रकार) का उपयोग करके। क्लास डेटा सदस्यों और मेथड्स को एक साथ बांधती है

  1. - C++ में आइडेंटिफायर

    C++ आइडेंटिफायर एक नाम है जिसका उपयोग वेरिएबल, फ़ंक्शन, क्लास, मॉड्यूल, या किसी अन्य उपयोगकर्ता-परिभाषित आइटम की पहचान के लिए किया जाता है। एक आइडेंटिफायर A से Z या a से z तक के अक्षर या अंडरस्कोर (_) से शुरू होता है जिसके बाद शून्य या अधिक अक्षर, अंडरस्कोर, और अंक (0 से 9) आ सकते हैं। C++ आइडेंटिफ

  1. - लिनक्स पर C++ के लिए सर्वश्रेष्ठ IDE कौन सा है?

    बड़े प्रोजेक्ट्स को केवल टेक्स्ट एडिटर्स पर प्रबंधित करना मुश्किल होता है। ऐसे मामलों में IDE का उपयोग करने से आप अधिक उत्पादक और कम निराश होंगे। विभिन्न प्रकार के IDE उपलब्ध हैं और आपको अपनी आवश्यकताओं के अनुरूप सही चुनना चाहिए। लिनक्स पर C++ के लिए कोई एक सर्वश्रेष्ठ IDE नहीं है; आपको अपने टूल को