TopcoderArchiveVisit Topcoder
SRM27 Aug 2016
SRM 698 (Google)

RepeatString

Problem statement, definition, constraints, and public examples.

Problem Statement

A string S is called a square if there is some string T such that S = T + T. For example, the strings "", aabaab" and "xxxx" are squares, but "a", "aabb" and "aabbaa" are not.

You are given a String s. You want to change s into a square. You may do the following operations:
  • Insert a new character anywhere into the string (including its beginning and end).
  • Remove a single character.
  • Replace a single character by another character.

Please compute and return the smallest number of operations needed to change the given s into a square. Note that this is always possible: for example, you can remove all characters (one at a time).

Definition

Class:
RepeatString
Method:
minimalModify
Parameters:
String
Returns:
int
Method signature:
int minimalModify(String s)
(be sure your method is public)

Constraints

  • s will contain between 1 and 50 characters, inclusive.
  • Each character in s will be a lowercase English letter ('a'-'z').

Examples

  1. "aba"
    Returns: 1
    One of the optimal solutions is to remove the 'b'. This changes the given s into the square "aa".
  2. "adam"
    Returns: 1
    Here, one optimal solution is to change the 'm' to 'd' to get "adad".
  3. "x"
    Returns: 1
    This time one optimal solution is to append another 'x' to get "xx".
  4. "aaabbbaaaccc"
    Returns: 3
    For example, we can change this string into "aaabbbaaabbb". Note that this requires three operations, not one.
  5. "repeatstring"
    Returns: 6
  6. "aaaaaaaaaaaaaaaaaaaa"
    Returns: 0
Back to all problems