palindrome: use slices in the concurrent version too. The single thread version is so fast now, that using channels makes this one slower
[?]
Dec 21, 2020, 10:01 PM
2P4Y7M5RO5NW4WTDKB4TSWSJKP6YVKXR6ZJYXJWK6WKB2SNGHQHQCDependencies
- [2]
L5UJYVXWpalindrome: Use string slice instead of concatenating, this makes the code WAY faster - [3]
ZQFONDI4Add simple version - [4]
O64GEJAPpalindrome: do not report one char long palindromes - [5]
AUM6AXH7It is enough to check only half of the string because of symmetry - [6]
VUXCDW3Lpalindrome: move to palindrome package - [7]
MCHVA5DYPalindrome initial import
Change contents
- replacement in snippets/palindrome/palindrome.go at line 35
longest := ""var longest string - replacement in snippets/palindrome/palindrome.go at line 40
go pal_worker(str, k, results)go palWorker(str, k, results) - replacement in snippets/palindrome/palindrome.go at line 59
func pal_worker(str string, k int, result chan<- string) {longest := string(str[k])for i := 1; true; i++ {// avoid overrun or underrunif k-i < 0 || k+i > len(str)-1 {break}// two identical bytesfunc palWorker(str string, k int, result chan<- string) {var longest stringfor i := 1; k-i > -1 && k+i < len(str); i++ { - replacement in snippets/palindrome/palindrome.go at line 63
longest = string(str[k-i]) + longest + string(str[k+i])longest = str[k-i : k+i+1] - edit in snippets/palindrome/palindrome.go at line 67
}//fmt.Fprintf(os.Stderr, "Worker(%d) result: %s\n", k, longest)if len(longest) > 1 {result <- longest} else {result <- "" - edit in snippets/palindrome/palindrome.go at line 68
result <- longest