Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void getMoves(size_t* moves, char* pattern) {
- for (size_t i = lengthOfTemplate - 2; i > 0; i--) {
- if (moves[(int)pattern[i]] == lengthOfTemplate) {
- moves[(int)pattern[i]] = lengthOfTemplate - i - 1;
- }
- }
- if (moves[(int)pattern[0]] == lengthOfTemplate) {
- moves[(int)pattern[0]] = lengthOfTemplate - 1;
- }
- }
- size_t getCurrentMove(char* pattern, char* buffer, size_t* moves, size_t currentIndex) {
- for (size_t i = lengthOfTemplate - 1; i > 0; i--) {
- printf("%zu ", currentIndex--);
- if (buffer[i] != pattern[i]) {
- return moves[buffer[lengthOfTemplate - 1]];
- }
- }
- if (buffer[0] != pattern[0]) {
- return lengthOfTemplate;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement