এই সেকশনে আমরা দেখব কিভাবে একটি স্ট্রিং ইন-প্লেস (in-place) রিভার্স করা যায়। অর্থাৎ রিভার্স করার জন্য আমরা কোনো অতিরিক্ত মেমরি স্পেস ব্যবহার করব না। সি++-এ আমরা std::string ব্যবহার করতে পারি। কিন্তু সি-এ আমাদের ক্যারেক্টার অ্যারে ব্যবহার করতে হবে। এই প্রোগ্রামে আমরা ক্যারেক্টার অ্যারে ব্যবহার করছি স্ট্রিং নেওয়ার জন্য। তারপর সেটি রিভার্স করছি।
Input: A string "This is a string" Output: The reversed string "gnirts a si sihT"
এলগরিদম
reverse_string(str)
ইনপুট − স্ট্রিং
আউটপুট − রিভার্স করা স্ট্রিং।
len := স্ট্রিং-এর দৈর্ঘ্য
i := 0 এবং j := (len-1)
while i < j, do
পজিশন i এবং j-এর ক্যারেক্টারগুলো сваপ (swap) করুন
i := i + 1
j := j - 1
done
উদাহরণ কোড
#include <iostream>
#include <cstring>
using namespace std;
void reverse(char s[]) {
int len = strlen(s); // স্ট্রিং-এর দৈর্ঘ্য পাওয়া
int i, j;
for (i = 0, j = len - 1; i < j; i++, j--) {
swap(s[i], s[j]);
}
}
int main() {
char s[20] = "This is a string";
cout << "Main String: " << s << endl;
reverse(s);
cout << "Reversed String: " << s << endl;
}
আউটপুট
Main String: This is a string Reversed String: gnirts a si sihT