Problem Statement
In this problem we consider four edit operations:
- Insert a character at any position of a string (including the beginning and the end)
- Delete a character at any position of a string
- Change a character at any position of a string
- Swap any two different characters (not necessarily adjacent)
You can apply the first three operations any number of times, but the last operation can be applied at most once.
You are given a
Definition
- Class:
- PalindromeFactory
- Method:
- getEditDistance
- Parameters:
- String
- Returns:
- int
- Method signature:
- int getEditDistance(String initial)
- (be sure your method is public)
Constraints
- initial will contain between 1 and 50 lowercase letters ('a'-'z'), inclusive.
Examples
"abba"
Returns: 0
The string is already a palindrome.
"dabba"
Returns: 1
We can delete the first letter to make a palindrome.
"babacvabba"
Returns: 2
Delete 'v' and swap the first two characters.
"abc"
Returns: 1
We can change 'c' to 'a' to get a palindrome in one operation.
"acxcba"
Returns: 1
Insert 'b' after the first character.
"abcacbd"
Returns: 1
Swap 'd' with 'a' in the middle.
"aaacaacbcabaaaabbabacacabbabacaacabbabcbabbaaacbaa"
Returns: 8
"idbifahfhalihlcfbdlabldkdefajaafdlkdbaigbbbeklfcbi"
Returns: 18
"gwucaltwaaliqgyamiubwmtyragjbyytuiacdeorlaabbkaynr"
Returns: 18
"jicaejceicfhhejaebab"
Returns: 7
"topcoder"
Returns: 4
"jajaaadafgfhajjjceah"
Returns: 6
"accbabb"
Returns: 3
"abcgefdgfecdba"
Returns: 3
"zyz"
Returns: 0
"xyz"
Returns: 1
"aaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbb"
Returns: 24
"gugugugugugugugugugugugugu"
Returns: 1
"ppppppppppppsssssssssssssssuuuuuuuuuuu"
Returns: 11
"abcdefgrijklmnopqrstuvwxxwvutshqponmlkgjihgfedcba"
Returns: 2
"a"
Returns: 0
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"
Returns: 0
"abcdefggfedcbazx"
Returns: 2
"flagihjkbbfkjakeacfakgcdaadafeafbblbgefgbdjhhbhabj"
Returns: 16
"aablgbghieeehfaclijhajbcabfdibadjaclgffhehacldbcaa"
Returns: 15
"lfaggcdkheldafcagcflabahkfaiajaaigacdheccfdhdfhafl"
Returns: 15
"biliflakbackcagaeaialdclcidbclbicegfchifggbjaafleb"
Returns: 15
"aecagabaaebgbdefaeaaaaaggbcecaaeabedbggfbeaabadec"
Returns: 10
"aagagacgdgadgbecgdbaacadbadgcaedggadddagbgeaaagaa"
Returns: 10
"ccgcaaaddcafcdcdacgafacaeacggddgcagdadfgbddaagegc"
Returns: 11
"cceaabaccdaeaabdccbdcabbbaacdbbcdeaaadeadcabaacba"
Returns: 8
"aebcaeabbadcabeabacedaaadeaaaeecaeabacdeaebcaacbe"
Returns: 8
"dashklasdlkansclkjncsdjhflkasjdskajdsalkcalksask"
Returns: 14
"cuandolascosasfeasteatacannopuedesconetucodigofeo"
Returns: 20
"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwx"
Returns: 23
"abkanodfanogoandgaongoawenaohnoahnoaonho"
Returns: 12
"abcdefghijklmnopqrstuvwxyzabcdefg"
Returns: 14
"abcdefghijklmnopqrstuvwxyzabcdefghijklmpqrstuvwxyz"
Returns: 23
"abcdefghijklmnoprstuyvwxyzqw"
Returns: 14
"ecbbacad"
Returns: 3
"abcdefghijklmnopqrstuv"
Returns: 11
"abcdefghijklmnopqrstuvwxyz"
Returns: 13
"jghfffuiklllllllllllasdfghuwwwwwiasdjklllllljhgyub"
Returns: 18
"lfhajdheiwuqyrjsadhf"
Returns: 7
"bbcdefghijklmqopqrstuvwxyzyxwvutsrnponmlkjihgfedca"
Returns: 3
"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvw"
Returns: 22
"abcdefghijklmoqwertyuabcdefghijklmoqertycccvdcbak"
Returns: 19
"abcdeedcab"
Returns: 1
"ab"
Returns: 1
"iadoakjbfadlkjhfadiuksjdfbkadfkbvaadfkjadf"
Returns: 15
"amsdofozjzejfabmqsdjfazeopaozefjaqsdfmjsdqomfsdmsa"
Returns: 16