aboutsummaryrefslogtreecommitdiff
path: root/stamping_sequence.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'stamping_sequence.cpp')
-rw-r--r--stamping_sequence.cpp34
1 files changed, 34 insertions, 0 deletions
diff --git a/stamping_sequence.cpp b/stamping_sequence.cpp
new file mode 100644
index 0000000..b9ba317
--- /dev/null
+++ b/stamping_sequence.cpp
@@ -0,0 +1,34 @@
+#include "leetcode.h"
+
+class Solution {
+public:
+ vector<int> movesToStamp(string stamp, string target) {
+ if (stamp == target)
+ return {0};
+ int sLen = stamp.size(), tLen = target.size() - sLen + 1, i, j;
+ vector<int> ans;
+ bool tDiff = true, sDiff;
+ while (tDiff) {
+ for (i = 0, tDiff = false; i < tLen; i++) {
+ for (j = 0, sDiff = false; j < sLen; j++) {
+ if (target[i + j] == '*')
+ continue;
+ else if (target[i + j] != stamp[j])
+ break;
+ else
+ sDiff = true;
+ }
+ if (j == sLen && sDiff) {
+ for (j = i, tDiff = true; j < sLen + i; j++)
+ target[j] = '*';
+ ans.push_back(i);
+ }
+ }
+ for (i = 0; i < target.size(); i++)
+ if (target[i] != '*')
+ return {};
+ reverse(ans.begin(), ans.end());
+ }
+ return ans;
+ }
+};