aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--rotate_string.c31
-rw-r--r--rotate_string.py24
2 files changed, 55 insertions, 0 deletions
diff --git a/rotate_string.c b/rotate_string.c
new file mode 100644
index 0000000..cb38ca6
--- /dev/null
+++ b/rotate_string.c
@@ -0,0 +1,31 @@
+// 796. Rotate String
+#include "leetcode.h"
+
+/*
+ * given two strings 's' and 'goal', return 'true' if and only if 's' can become
+ * 'goal' after some number of shifts on 's'. a shift on 's' consists of moving
+ * the leftmost character of 's' to the rightmost position. for example, if 's =
+ * "abcde"', then it will be "bcdea" after one shift.
+ */
+
+bool rotateString(char *s, char *goal) {
+ int sn = strlen(s), gn = strlen(goal);
+ if (sn == gn) {
+ for (int i = 0; i < sn; i++) {
+ if (!strcmp(s, goal))
+ return true;
+ char tmp = s[0];
+ for (int j = 0; j < gn - 1; j++)
+ s[j] = s[j + 1];
+ s[sn - 1] = tmp;
+ }
+ }
+ return false;
+}
+
+int main() {
+ char *s1 = "abcde", *g1 = "cdeab";
+ char *s2 = "abcde", *g2 = "abced";
+ printf("%d\n", rotateString(s1, g1)); // expect: 1
+ printf("%d\n", rotateString(s2, g2)); // expect: 0
+}
diff --git a/rotate_string.py b/rotate_string.py
new file mode 100644
index 0000000..ee47c41
--- /dev/null
+++ b/rotate_string.py
@@ -0,0 +1,24 @@
+# 796. Rotate String
+
+"""
+given two strings 's' and 'goal', return 'true' if and only if 's' can become
+'goal' after some number of shifts on 's'. a shift on 's' consists of moving
+the leftmost character of 's' to the rightmost position. for example, if 's =
+"abcde"', then it will be "bcdea" after one shift.
+"""
+
+
+class Solution(object):
+ def rotateString(self, s, goal):
+ """
+ :type s: str
+ :type goal: str
+ :rtype: bool
+ """
+ return len(s) == len(goal) and goal in s + s
+
+
+if __name__ == "__main__":
+ obj = Solution()
+ print(obj.rotateString(s="abcde", goal="cdeab"))
+ print(obj.rotateString(s="abcde", goal="abced"))