日期:2025年8月1日
ZeroJudge 題目連結:b759. 我明明就有說過= =
解題想法
這題可以只用字串切片或是索引值組合出每次要印出的內容,也可以每次都更新字串的內容,兩種方法的速度都很快。
Python 程式碼
使用時間約為 21 ms,記憶體約為 3.3 MB,通過測試。
X = input()
for i in range(len(X)):
print(X[i:]+X[:i])
每次印出字串後,重新組合字串。使用時間約為 20 ms,記憶體約為 3.3 MB,通過測試。
X = input()
for i in range(len(X)):
print(X)
X = X[1:] + X[0]
C++ 程式碼
使用時間約為 4 ms,記憶體約為 360 kB,通過測試。
#include <iostream>
#include <string>
using namespace std;
int main() {
ios::sync_with_stdio(0); cin.tie(0);
string X; cin >> X;
for(size_t i=0; i<X.size(); i++)
cout << X.substr(i, X.size()-i) << X.substr(0, i) << "\n";
return 0;
}
每次印出字串後,重新組合字串。使用時間約為 4 ms,記憶體約為 332 kB,通過測試。
#include <iostream>
#include <string>
using namespace std;
int main() {
string X; cin >> X;
for(size_t i=0; i<X.size(); i++) {
cout << X << "\n";
X = X.substr(1, X.size()-1) + X.substr(0, 1);
}
return 0;
}
用 algorithm 函式庫中的 rotate 函數,每次印出字串後,將字串中每個字元依序向左移動一格。。使用時間約為 4 ms,記憶體約為 332 kB,通過測試。
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main() {
string X; cin >> X;
for(size_t i=0; i<X.size(); i++) {
cout << X << "\n";
rotate(X.begin(), X.begin()+1, X.end());
}
return 0;
}
沒有留言:
張貼留言