Problem Statement
One of the problems with most implementations is that everything is converted to upper case. Another problem is that numbers are ignored completely, leaving them unencrypted. One way to overcome these limitations is to extend ROT13 to cover lowercase letters as well as numbers. Here is how our extended ROT transformations will work:
characters become A-M N-Z N-Z A-M a-m n-z n-z a-m 0-4 5-9 5-9 0-4
For example, the message "Uryyb 28" would become "Hello 73" after being transformed.
U -> H 2 -> 7 r -> e 8 -> 3 y -> l y -> l b -> 0Notice that the spaces were left as is.
You have intercepted a message which you believe to be encrypted using this process. Create a class SuperRot with a method decoder that takes a
Definition
- Class:
- SuperRot
- Method:
- decoder
- Parameters:
- String
- Returns:
- String
- Method signature:
- String decoder(String message)
- (be sure your method is public)
Notes
- All spaces occuring in message are left as spaces in the decoded String.
Constraints
- message will have between 0 and 50 characters inclusive.
- message will consist only of letters 'a' - 'z' and 'A' - 'Z', digits '0' - '9', and the space character.
- message will not contain two or more consecutive spaces.
- There will be no leading or trailing spaces.
Examples
"Uryyb 28"
Returns: "Hello 73"
This is the example from above.
"GbcPbqre"
Returns: "TopCoder"
G -> T b -> o c -> p P -> C b -> o q -> d r -> e e -> r
""
Returns: ""
Remember the empty String.
"5678901234"
Returns: "0123456789"
"NnOoPpQqRr AaBbCcDdEe"
Returns: "AaBbCcDdEe NnOoPpQqRr"
"Gvzr vf 54 71 CZ ba Whyl 4gu bs gur lrne 7558 NQ"
Returns: "Time is 09 26 PM on July 9th of the year 2003 AD"
"Gur dhvpx oebja sbk whzcf bire n ynml qbt"
Returns: "The quick brown fox jumps over a lazy dog"
"nopqrstuvwxyzabcdefghijklm"
Returns: "abcdefghijklmnopqrstuvwxyz"
"NOPQRSTUVWXYZABCDEFGHIJKLM"
Returns: "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"5678901234"
Returns: "0123456789"
"topcoder com is the place to go when you are bored"
Returns: "gbcpbqre pbz vf gur cynpr gb tb jura lbh ner oberq"
"gbcpbqre pbz vf gur cynpr gb tb jura lbh ner oberq"
Returns: "topcoder com is the place to go when you are bored"
"a B c D e F g H i J k L m N o P q R s T u V w X y"
Returns: "n O p Q r S t U v W x Y z A b C d E f G h I j K l"
"abcdefghijklmnopqrstuvwxy and z now ive said my"
Returns: "nopqrstuvwxyzabcdefghijkl naq m abj vir fnvq zl"
"abcs next time wont you sing with meeeeeeeeeeeeeee"
Returns: "nopf arkg gvzr jbag lbh fvat jvgu zrrrrrrrrrrrrrrr"
"5"
Returns: "0"
"OxrqVmSDxNEnMjdpJFg8Fx3cSEDBnwczjHf2rw3f 8IJejwnnR"
Returns: "BkedIzFQkARaZwqcWSt3Sk8pFRQOajpmwUs7ej8s 3VWrwjaaE"
"isCcIVgJWJ5w8c3aUkMMFJJLQovBPYSyEUQMnwW83Pt0qkR9Lb"
Returns: "vfPpVItWJW0j3p8nHxZZSWWYDbiOCLFlRHDZajJ38Cg5dxE4Yo"
"KQjUaz7L0LhG lZNvC F91Trp S45bWGp5YFsUOjdtndUCoEFo"
Returns: "XDwHnm2Y5YuT yMAiP S46Gec F90oJTc0LSfHBwqgaqHPbRSb"
"HDdasIX9DTZXXDQvI9DVfeEJ5XLkbOMiPp89vU4wlSH7VXpbUs"
Returns: "UQqnfVK4QGMKKQDiV4QIsrRW0KYxoBZvCc34iH9jyFU2IKcoHf"
"wzLz9GMIqlW2JmfEiPXcB9sH5BekdyRNmcCiiOqNzBD8njBJyY"
Returns: "jmYm4TZVdyJ7WzsRvCKpO4fU0OrxqlEAzpPvvBdAmOQ3awOWlL"
"lxVS4OTXwwJD9tdASAP9NC Q kx tjVTXqlP42kpnsslbKltKy"
Returns: "ykIF9BGKjjWQ4gqNFNC4AP D xk gwIGKdyC97xcaffyoXygXl"
"qV1njyMVv54HMPvvdooDTRv 2LJd4RQimHKK3WfpPZucpfNIJ1"
Returns: "dI6awlZIi09UZCiiqbbQGEi 7YWq9EDvzUXX8JscCMhpcsAVW6"
"JcI3c9Eja71qfbxnlo ETOeDqHh2NqtUH0NhyPGMM52pXnS7SP"
Returns: "WpV8p4Rwn26dsokayb RGBrQdUu7AdgHU5AulCTZZ07cKaF2FC"
"BjddlIiIAtwtD3hPYUedgoYZRtCjqSwp2QGdYojYXVFYPlnl5I"
Returns: "OwqqyVvVNgjgQ8uCLHrqtbLMEgPwdFjc7DTqLbwLKISLCyay0V"
"EZudwCMxj0FWd5mjW9L5UgRZ5e9iF1oIRXlBZvy9k2SBv4lI0u"
Returns: "RMhqjPZkw5SJq0zwJ4Y0HtEM0r4vS6bVEKyOMil4x7FOi9yV5h"
"GnIk0GPCV mU5FHlC8LmXl3D4QNUuHm90xcAFWLIdk4wQchh"
Returns: "TaVx5TCPI zH0SUyP3YzKy8Q9DAHhUz45kpNSJYVqx9jDpuu"
"SxVs5EuwsBKzFgNzNIIZcUjRcy5nVeBB1s88jiWTGZv9Il"
Returns: "FkIf0RhjfOXmStAmAVVMpHwEpl0aIrOO6f33wvJGTMi4Vy"
"kgCnbrhEHbQ7VYjdz0b8aiaSbtG5lMwRkYgz94823CMXM8I"
Returns: "xtPaoeuRUoD2ILwqm5o3nvnFogT0yZjExLtm49378PZKZ3V"
"s0zeIrvXtIHBN0olX m8SMbLczUcVlUSk1t2YFi9ghmUN2"
Returns: "f5mrVeiKgVUOA5byK z3FZoYpmHpIyHFx6g7LSv4tuzHA7"
"KoCHrLMQ87uTD3G lncc1zkaSODttCBDnQYKRPDV9WDGqk"
Returns: "XbPUeYZD32hGQ8T yapp6mxnFBQggPOQaDLXECQI4JQTdx"
"lufo9bD9jpoIuYd8SUb7wSmejOw5PTTu4W9qogOXG97UJ11"
Returns: "yhsb4oQ4wcbVhLq3FHo2jFzrwBj0CGGh9J4dbtBKT42HW66"
"tVntQ12z7mWGnZjDnWBmsrTO4BUvy HpaBAoFRxkV5pgzw"
Returns: "gIagD67m2zJTaMwQaJOzfeGB9OHil UcnONbSEkxI0ctmj"
"b5nY9SWCMKnXRIlQpWdhyqa ZW2Vh1cFPXLIqFdtL5vGrY"
Returns: "o0aL4FJPZXaKEVyDcJquldn MJ7Iu6pSCKYVdSqgY0iTeL"
"bOlAALCQ9PCvV5YPQpWUnJssfpKtduspbv HeOn01j5d7M"
Returns: "oByNNYPD4CPiI0LCDcJHaWffscXgqhfcoi UrBa56w0q2Z"
"zjTFcz4S0o5PHHvcPrU1dbpJDzZJoy89NtZSNJbVEbN7zM"
Returns: "mwGSpm9F5b0CUUipCeH6qocWQmMWbl34AgMFAWoIRoA2mZ"
"a19N428CssZ0 nIwhBQEA77PDPXk7foWWliQddRKMqAJRI3yHK"
Returns: "n64A973PffM5 aVjuODRN22CQCKx2sbJJyvDqqEXZdNWEV8lUX"
"0IExVFCsq7LSSi30wXUDhesfn lgwqomwqXHwXyaT skfmaS8s"
Returns: "5VRkISPfd2YFFv85jKHQurfsa ytjdbzjdKUjKlnG fxsznF3f"
"TcKB5x gStM4T lpEVC2vU2b4XDSn9B5aJ4V81zNkAH28qhB h"
Returns: "GpXO0k tFgZ9G ycRIP7iH7o9KQFa4O0nW9I36mAxNU73duO u"
"4s1uKvHLEtKDmiMg2HYrS7pYwmERoCzguqQ2aVEeEMfoupLkxh"
Returns: "9f6hXiUYRgXQzvZt7ULeF2cLjzREbPmthdD7nIRrRZsbhcYxku"
"QFb5dOigfKiUqQ 7JXRL1UXU9F Hquo70EzRSXxvfTELiBFrYV"
Returns: "DSo0qBvtsXvHdD 2WKEY6HKH4S Udhb25RmEFKkisGRYvOSeLI"
"2NpNhlSet7PV0FZqUpBGZhZdq5ewm2HcFupkV7EC0TYrWvXrZW"
Returns: "7AcAuyFrg2CI5SMdHcOTMuMqd0rjz7UpShcxI2RP5GLeJiKeMJ"
"xy3KRkGtUqlbHoLuMeqQhhk3M4ohlD3W1vhGTlznRaCYCNJOrx"
Returns: "kl8XExTgHdyoUbYhZrdDuux8Z9buyQ8J6iuTGymaEnPLPAWBek"
"fMSDFe8uBhv33noat8 hiR8kn9xuMcgppyquRmcQJOJAzxZgsY"
Returns: "sZFQSr3hOui88abng3 uvE3xa4khZptccldhEzpDWBWNmkMtfL"
"DQp 0R8lBHChvrUbZlB21IE J3wiZd7brmag3XF2cHaNwunMTm"
Returns: "QDc 5E3yOUPuieHoMyO76VR W8jvMq2oeznt8KS7pUnAjhaZGz"
"EKvGJ4 4cWVYxA9Ngzims rGMeyxqHasPLyXFvPfHk13k0GFnn"
Returns: "RXiTW9 9pJILkN4Atmvzf eTZrlkdUnfCYlKSiCsUx68x5TSaa"
"iljOZaMiNB4gwym8P3D4uaIbdjAbPiNwJwAgMMDZL549ue3 X8"
Returns: "vywBMnZvAO9tjlz3C8Q9hnVoqwNoCvAjWjNtZZQMY094hr8 K3"
"1FXAgyhePuCbgJNeqYrrv0mpwWHqTenLj9JDwqi Yka5umZY9E"
Returns: "6SKNtlurChPotWArdLeei5zcjJUdGraYw4WQjdv Lxn0hzML4R"