
[STLC++Set]cyclicShift
Bài tập.
Việt đang muốn tạo ra những từ khác nhau từ chuỗi word
. Với một chu kỳ, Anh bắt đầu bằng cách lấy ký tự cuối cùng của chuỗi word
và di chuyển nó lên đầu. Anh có thể thực hiện chu kỳ này rất nhiều lần.
Ví dụ lên tục thực hiện chu kỳ biến đổi đó trên word =
"abcda"
thì anh Việt sẽ nhận được các từ "aabcd"
, "daabc"
,…
Anh Việt muốn biết rằng mình có thể tạo được bao nhiều từ riêng biệt bằng cách biến đổi trên.
Ví dụ:
- Với
word = "abcd"
thì kết quả sẽ làcyclicWord(word) = 4
các từ mà anh Việt có thể nhận được là"abcd", "dabc", "cdab"
và"bcda"
.
Hướng dẫn.
Hãy biến đổi chuổi word của a Việt word.size() lần và lưu các chuỗi sau khi biến đổi vào một set, kết quả chính là số phần tử trong set đó.
Code mẫu:
int cyclicShift(string word){
set<string> s;
for(int i=0;i<=word.size();i++)
{
char x=word.back();
word.pop_back();
word.insert(word.begin()+0,x);
s.insert(word);
}
return s.size();
}
Post Comment