Hướng dẫn giải của [200 đề thầy Đức] Bài 123: Chuỗi dịch vòng
Chỉ dùng lời giải này khi không có ý tưởng, và đừng copy-paste code từ lời giải này. Hãy tôn trọng người ra đề và người viết lời giải.
Nộp một lời giải chính thức trước khi tự giải là một hành động có thể bị ban.
Nộp một lời giải chính thức trước khi tự giải là một hành động có thể bị ban.
Hướng dẫn giải
Cho chuỗi S có độ dài N, cần in ra N chuỗi dịch vòng của S theo đúng thứ tự: chuỗi thứ i bắt đầu từ ký tự thứ i rồi quay vòng về đầu.
Cách làm
Đọc chuỗi S và lấy độ dài n.
Với mỗi vị trí i từ 0 đến n - 1: lấy phần chuỗi từ vị trí i đến hết bằng s.substr(i), rồi nối với phần từ đầu đến trước vị trí i bằng s.substr(0, i).
In từng chuỗi kết quả, mỗi chuỗi một dòng, theo đúng thứ tự i tăng dần.
#include <bits/stdc++.h>
using namespace std;
int main() {
string s;
cin >> s;
int n = s.size();
// Dịch vòng lần thứ i: lấy từ vị trí i đến hết, rồi nối với đầu chuỗi đến trước vị trí i
for (int i = 0; i < n; i++) {
string kq = s.substr(i) + s.substr(0, i);
cout << kq << "\n";
}
return 0;
}
Bình luận