इस ट्यूटोरियल में, हम एक प्रोग्राम लिखने जा रहे हैं जो एक स्ट्रिंग में सभी पदों तक पहुंचने के लिए सिग्नल के लिए लगने वाले समय की गणना करता है। मैं इसे एक उदाहरण से समझाता हूं।
हमारे पास एक स्ट्रिंग होगी जिसमें केवल s . होगा और p पात्र। s एक संकेत है और p एक स्थिति है स्ट्रिंग में। एक संकेत s . पर प्रारंभ होता है और बाएँ और दाएँ दोनों दिशाओं में यात्रा करता है। हम मान रहे हैं कि स्ट्रिंग में अगली स्थिति की यात्रा करने में एक इकाई समय लगता है। हमारा काम सभी स्थितियों . को बदलने के लिए आवश्यक समय की गणना करना है सिग्नल . में ।
आइए कुछ उदाहरण देखें।
इनपुट - पीपीपीपीपीएसएस
आउटपुट -5
इनपुट - पीएसपीएसपीपीएस
आउटपुट - 1
इनपुट - ssssss
आउटपुट - 0
आइए देखें कि समस्या के समाधान में शामिल कदम क्या हैं।
-
एक स्ट्रिंग और एक समय शुरू करें (0)
-
स्ट्रिंग पर पुनरावृति करें।
-
सतत p . की गणना करें वर्ण और गिनती को एक चर में संग्रहीत करें।
-
यदि वर्तमान वर्ण s . है और p गिनती पिछली बार की तुलना में अधिक है, फिर जांचें कि क्या s बाईं ओर मौजूद है या नहीं।
-
अगर s दोनों पक्षों में मौजूद है, फिर गिनती को s . के रूप में दो हिस्सों में विभाजित करें दोनों दिशाओं में यात्रा कर सकते हैं।
-
p . की गिनती रीसेट करें ।
-
उदाहरण
आइए कोड देखें।
#include <bits/stdc++.h> using namespace std; int timeToConvertToSignalString(string sample_string, int string_len) { int p_count = 0, time = 0; for (int i = 0; i <= string_len; i++) { if (sample_string[i] == 'p') { p_count++; } else { if (p_count > time) { bool is_present_left_side = false; if (((i - p_count) > 0) && (sample_string[i - p_count - 1] == 's')) { is_present_left_side = 1; } if (is_present_left_side) { p_count = ceil((double)p_count / 2); } time = max(time, p_count); } p_count = 0; } } return time; } int main() { string sample_string = "pppppspss"; int n = sample_string.size(); cout << timeToConvertToSignalString(sample_string, n) << endl; return 0; }
आउटपुट
यदि आप उपरोक्त प्रोग्राम को निष्पादित करते हैं, तो आपको निम्न परिणाम प्राप्त होंगे।
5
प्रोग्राम को किसी भिन्न केस के साथ चलाने का प्रयास करें और इसे जांचें।
निष्कर्ष
यदि ट्यूटोरियल में आपके कोई प्रश्न हैं, तो उनका टिप्पणी अनुभाग में उल्लेख करें।