From 5cb33f7aa4f0ecc545872d68488f8e7a20c42b43 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=B6khan=20=C3=87a=C4=9Fr=C4=B1tekin?= Date: Wed, 27 Jul 2022 20:54:02 +0300 Subject: [PATCH] 131 palindrome partitioning golang --- go/131-Palindrome-Partitioning.go | 34 +++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 go/131-Palindrome-Partitioning.go diff --git a/go/131-Palindrome-Partitioning.go b/go/131-Palindrome-Partitioning.go new file mode 100644 index 000000000..c37c4a519 --- /dev/null +++ b/go/131-Palindrome-Partitioning.go @@ -0,0 +1,34 @@ +package main + +func partition(s string) [][]string { + ans := make([][]string, 0) + curr := make([]string, 0) + var backtrack func(idx int) + backtrack = func(idx int) { + if idx == len(s) { + ans = append(ans, append([]string{}, curr...)) + } + for i := idx; i < len(s); i++ { + if isPalindrome(s[idx : i+1]) { + curr = append(curr, s[idx:i+1]) + backtrack(i + 1) + curr = curr[:len(curr)-1] + } + } + } + backtrack(0) + return ans +} + +func isPalindrome(s string) bool { + l := 0 + r := len(s) - 1 + for l < r { + if s[l] != s[r] { + return false + } + l++ + r-- + } + return true +}