#include <stdio.h>
#include <string.h>
#include<stdbool.h>
// Function to check if two strings are equal after shifting
bool canBeEqualAfterShifts(char S[], char goal[]) {
int countS[26] = {0}, countG[26] = {0};
// Count the occurrences of each character in the initial string
for (int i
= 0; i
< strlen(S
); i
++) countS[S[i] - 'a']++;
// Count the occurrences of each character in the goal string
for (int i
= 0; i
< strlen(goal
); i
++) countG[goal[i] - 'a']++;
// If the count of each character in both strings is the same, return true
for (int i = 0; i < 26; i++)
if (countS[i]!= countG[i])
return false;
return true;
}
int main() {
char S[] = "abcdefg";
char goal[] = "defgabc";
if (canBeEqualAfterShifts(S, goal))
else
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGU8c3RkYm9vbC5oPgoKLy8gRnVuY3Rpb24gdG8gY2hlY2sgaWYgdHdvIHN0cmluZ3MgYXJlIGVxdWFsIGFmdGVyIHNoaWZ0aW5nCmJvb2wgY2FuQmVFcXVhbEFmdGVyU2hpZnRzKGNoYXIgU1tdLCBjaGFyIGdvYWxbXSkgewogICAgaW50IGNvdW50U1syNl0gPSB7MH0sIGNvdW50R1syNl0gPSB7MH07CgogICAgLy8gQ291bnQgdGhlIG9jY3VycmVuY2VzIG9mIGVhY2ggY2hhcmFjdGVyIGluIHRoZSBpbml0aWFsIHN0cmluZwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzdHJsZW4oUyk7IGkrKykKICAgICAgICBjb3VudFNbU1tpXSAtICdhJ10rKzsKCiAgICAvLyBDb3VudCB0aGUgb2NjdXJyZW5jZXMgb2YgZWFjaCBjaGFyYWN0ZXIgaW4gdGhlIGdvYWwgc3RyaW5nCiAgICBmb3IgKGludCBpID0gMDsgaSA8IHN0cmxlbihnb2FsKTsgaSsrKQogICAgICAgIGNvdW50R1tnb2FsW2ldIC0gJ2EnXSsrOwoKICAgIC8vIElmIHRoZSBjb3VudCBvZiBlYWNoIGNoYXJhY3RlciBpbiBib3RoIHN0cmluZ3MgaXMgdGhlIHNhbWUsIHJldHVybiB0cnVlCiAgICBmb3IgKGludCBpID0gMDsgaSA8IDI2OyBpKyspCiAgICAgICAgaWYgKGNvdW50U1tpXSE9IGNvdW50R1tpXSkKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwoKICAgIHJldHVybiB0cnVlOwp9CgppbnQgbWFpbigpIHsKICAgIGNoYXIgU1tdID0gImFiY2RlZmciOwogICAgY2hhciBnb2FsW10gPSAiZGVmZ2FiYyI7CgogICAgaWYgKGNhbkJlRXF1YWxBZnRlclNoaWZ0cyhTLCBnb2FsKSkKICAgICAgICBwcmludGYoInRydWUiKTsKICAgIGVsc2UKICAgICAgICBwcmludGYoImZhbHNlIik7CgogICAgcmV0dXJuIDA7Cn0=