Statistics

Problem Statement for "MarbleNecklace"

Problem Statement

Consider a necklace composed of marbles of various colors arranged in a circle. The colors are represented by uppercase letters. We can describe a necklace with a string of characters as follows: start with any marble and go through all the marbles in either a clockwise or counter-clockwise direction, until the starting marble is reached again, meanwhile appending to the string the colors of the marbles in the order they are visited. Obviously, there could be many different strings describing the same necklace. For example, the necklace described by the string "CDAB" can also be described by seven other strings (see example 0).

You are given a String necklace containing the description of a necklace. Return the description for that necklace that comes earliest alphabetically.

Definition

Class:
MarbleNecklace
Method:
normalize
Parameters:
String
Returns:
String
Method signature:
String normalize(String necklace)
(be sure your method is public)

Constraints

  • necklace will contain between 1 and 50 characters, inclusive.
  • Each character of necklace will be an uppercase letter ('A'-'Z').

Examples

  1. "CDAB"

    Returns: "ABCD"

    This necklace can be described by the eight strings "CDAB", "DABC", "ABCD", "BCDA", "CBAD", "DCBA", "ADCB", "BADC". "ABCD" comes first lexicographically.

  2. "RGB"

    Returns: "BGR"

  3. "TOPCODER"

    Returns: "CODERTOP"

  4. "X"

    Returns: "X"

  5. "TC"

    Returns: "CT"

  6. "AUAHS"

    Returns: "AHSAU"

  7. "ANHJVFH"

    Returns: "AHFVJHN"

  8. "PZFWDNQER"

    Returns: "DNQERPZFW"

  9. "WEAPDWPTPH"

    Returns: "AEWHPTPWDP"

  10. "LHDFRFCXMPRBS"

    Returns: "BRPMXCFRFDHLS"

  11. "LSZRYKMVSDSSHIW"

    Returns: "DSSHIWLSZRYKMVS"

  12. "OGCKGAPJNOIZSMWYY"

    Returns: "AGKCGOYYWMSZIONJP"

  13. "ZGCZYWGIGEOQEDWJSR"

    Returns: "CGZRSJWDEQOEGIGWYZ"

  14. "HUKTGUANLMSKZXIREIWH"

    Returns: "ANLMSKZXIREIWHHUKTGU"

  15. "HRICRSSENBMIECNLJTXIUQW"

    Returns: "BMIECNLJTXIUQWHRICRSSEN"

  16. "VQANBHOXRYWEMGSAFJNPJPHWZ"

    Returns: "AFJNPJPHWZVQANBHOXRYWEMGS"

  17. "MQQYDYAYGIWSNHRRNDNDVENIKAC"

    Returns: "ACMQQYDYAYGIWSNHRRNDNDVENIK"

  18. "NDQBATCEYHCJRVBTYTBCVBBGOIINS"

    Returns: "ABQDNSNIIOGBBVCBTYTBVRJCHYECT"

  19. "PJSHKPGCGNROCMTHELKOXPXDGLFTGCV"

    Returns: "CGNROCMTHELKOXPXDGLFTGCVPJSHKPG"

  20. "JLRIUGHHRQMWYMNKQERQTCHJEFDHJARA"

    Returns: "AJHDFEJHCTQREQKNMYWMQRHHGUIRLJAR"

  21. "SONBZELGFEQMSULZCNPJODOWPEWLHJFOEW"

    Returns: "BNOSWEOFJHLWEPWODOJPNCZLUSMQEFGLEZ"

  22. "AJKQVGEULNYDTFOZUZJYGWTQJZEFYGUDQDHH"

    Returns: "AHHDQDUGYFEZJQTWGYJZUZOFTDYNLUEGVQKJ"

  23. "IQKPQMOPYXIDZKYWDBJMLWIQDEQYATEDNTSLFD"

    Returns: "ATEDNTSLFDIQKPQMOPYXIDZKYWDBJMLWIQDEQY"

  24. "BTDCTWOUDVWXHQCEUAPBFDVQLKQSBBLLWASLIVPV"

    Returns: "APBFDVQLKQSBBLLWASLIVPVBTDCTWOUDVWXHQCEU"

  25. "DLYDPZRTEWDEACZPGDXBKDXULYDQJODQOMWDBVBZOXQ"

    Returns: "ACZPGDXBKDXULYDQJODQOMWDBVBZOXQDLYDPZRTEWDE"

  26. "EOMRKCMQGUVBTJPWDOCJUACGGMFQXZFRXOETXCZKEUJQ"

    Returns: "ACGGMFQXZFRXOETXCZKEUJQEOMRKCMQGUVBTJPWDOCJU"

  27. "NDUAPAGSKEXWHNHZGINGLWDFZFJRBUZSBCIMOFADAUJIUXC"

    Returns: "ADAFOMICBSZUBRJFZFDWLGNIGZHNHWXEKSGAPAUDNCXUIJU"

  28. "LOIFNTRBPGOLCQWDUVTLKQTSPEYMXRITRXZXFJWBWEHQVCGSB"

    Returns: "BLOIFNTRBPGOLCQWDUVTLKQTSPEYMXRITRXZXFJWBWEHQVCGS"

  29. "HOJURSWOKLGZLHQXLVUXDCJJCVQGVRVXPVDZJEFCOEWDXAPFMF"

    Returns: "APFMFHOJURSWOKLGZLHQXLVUXDCJJCVQGVRVXPVDZJEFCOEWDX"

  30. "JEWQWKYXPJPSJFZZQHNTSSOPFFRMXGGRXXQIXRYBLBMQEHDHHE"

    Returns: "BLBMQEHDHHEJEWQWKYXPJPSJFZZQHNTSSOPFFRMXGGRXXQIXRY"

  31. "FDMIOBNIAWJYMNNXIVUNCXHXHBUUFISVJLJWQTDRUOCIKPESHW"

    Returns: "AINBOIMDFWHSEPKICOURDTQWJLJVSIFUUBHXHXCNUVIXNNMYJW"

  32. "VFXQRQOUVPPTOKCPXYUQRDUYESBEATPMXJOCVSKDGIAWHJKLHA"

    Returns: "AEBSEYUDRQUYXPCKOTPPVUOQRQXFVAHLKJHWAIGDKSVCOJXMPT"

  33. "PUJODPYHGZCMYAUILYEZSQEBVVKTJIABFROIPCDLGGQLFAVXME"

    Returns: "ABFROIPCDLGGQLFAVXMEPUJODPYHGZCMYAUILYEZSQEBVVKTJI"

  34. "HOJUZALRLLLOHBHKICYEVRTHNOFJBFEGITGXCQSJSQDSWGJVQC"

    Returns: "ALRLLLOHBHKICYEVRTHNOFJBFEGITGXCQSJSQDSWGJVQCHOJUZ"

  35. "AABB"

    Returns: "AABB"

  36. "ABCABBBAAC"

    Returns: "AABBBACBAC"

  37. "CDADBA"

    Returns: "ABDADC"

  38. "A"

    Returns: "A"

  39. "AQCADT"

    Returns: "ACQATD"

  40. "EDCBABAAABCDE"

    Returns: "AAABABCDEEDCB"

  41. "EDCBABABCDE"

    Returns: "ABABCDEEDCB"

  42. "ALTABC"

    Returns: "ABCALT"

  43. "ZZZABBAAZZZZ"

    Returns: "AABBAZZZZZZZ"

  44. "ADACABACAD"

    Returns: "ABACADADAC"

  45. "ZEDDDCBABCDDDFZZZ"

    Returns: "ABCDDDEZZZZFDDDCB"

  46. "ABAZD"

    Returns: "ABADZ"

  47. "ABCD"

    Returns: "ABCD"

  48. "ASOFNBZELGFEQMSULZCNPJODOWPEWLHJFOEWAJFLAAFSSAA"

    Returns: "AAASOFNBZELGFEQMSULZCNPJODOWPEWLHJFOEWAJFLAAFSS"

  49. "AAZAZ"

    Returns: "AAZAZ"

  50. "ABAAC"

    Returns: "AABAC"

  51. "BBBB"

    Returns: "BBBB"

  52. "ABOOAARDVARK"

    Returns: "AAOOBAKRAVDR"

  53. "ABCBAABC"

    Returns: "AABCABCB"

  54. "ABCA"

    Returns: "AABC"

  55. "ABAAAABBCC"

    Returns: "AAAABACCBB"

  56. "SONBZELGFEQMSULZCNPJODOWPEWLHJFOEW"

    Returns: "BNOSWEOFJHLWEPWODOJPNCZLUSMQEFGLEZ"

  57. "BCABCDAAA"

    Returns: "AAABCABCD"

  58. "BBACBABAB"

    Returns: "ABABBBACB"

  59. "CBAD"

    Returns: "ABCD"

  60. "ABCHGSKDMSDSD"

    Returns: "ABCHGSKDMSDSD"

  61. "ABBA"

    Returns: "AABB"

  62. "ZZZZZZZZZZZZZZZZZZ"

    Returns: "ZZZZZZZZZZZZZZZZZZ"

  63. "BDFBDEC"

    Returns: "BCEDBFD"

  64. "ZZZZZZZZZZ"

    Returns: "ZZZZZZZZZZ"

  65. "ABCDDCAAZ"

    Returns: "AACDDCBAZ"

  66. "ZBRTABBTABBBBAB"

    Returns: "ABBBBABZBRTABBT"

  67. "BACDA"

    Returns: "ABACD"

  68. "ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"

    Returns: "ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"

  69. "CAABA"

    Returns: "AABAC"

  70. "RGB"

    Returns: "BGR"

  71. "BAC"

    Returns: "ABC"

  72. "GGGBA"

    Returns: "ABGGG"

  73. "BACA"

    Returns: "ABAC"

  74. "AZCAZ"

    Returns: "ACZAZ"

  75. "ZEGZFE"

    Returns: "EFZGEZ"

  76. "CBABD"

    Returns: "ABCDB"

  77. "ABCAA"

    Returns: "AAABC"

  78. "EDCBA"

    Returns: "ABCDE"

  79. "BBBBBBBBBBAZAZ"

    Returns: "ABBBBBBBBBBZAZ"

  80. "DACCABCAD"

    Returns: "ABCADDACC"

  81. "AAAAAAABAAAAAA"

    Returns: "AAAAAAAAAAAAAB"

  82. "ZAZCAC"

    Returns: "ACZAZC"

  83. "YAZBAC"

    Returns: "ABZAYC"

  84. "FAFAAA"

    Returns: "AAAFAF"

  85. "TOPCODER"

    Returns: "CODERTOP"

  86. "BBCCBC"

    Returns: "BBCBCC"

  87. "BABCAA"

    Returns: "AABABC"

  88. "FGKABDBAJPRIADAVABAABVCS"

    Returns: "AABAVADAIRPJABDBAKGFSCVB"

  89. "ACABAC"

    Returns: "ABACAC"

  90. "DCACB"

    Returns: "ACBDC"

  91. "ACBDC"

    Returns: "ACBDC"

  92. "ABCDAB"

    Returns: "ABABCD"


This problem statement is the exclusive and proprietary property of TopCoder, Inc. Any unauthorized use or reproduction of this information without the prior written consent of TopCoder, Inc. is strictly prohibited. (c)2024, TopCoder, Inc. All rights reserved.
This problem was used for: