fork download
  1. #include <iostream>
  2. #include <algorithm>
  3. #include <map>
  4.  
  5.  
  6. class LeetSpeakTranslator {
  7. public:
  8. LeetSpeakTranslator() {
  9. speakToLeetMap_[ "A" ] = "4";
  10. speakToLeetMap_[ "B" ] = "6";
  11. speakToLeetMap_[ "E" ] = "3";
  12. speakToLeetMap_[ "I" ] = "1";
  13. speakToLeetMap_[ "L" ] = "1";
  14. speakToLeetMap_[ "M" ] = "(V)";
  15. speakToLeetMap_[ "N" ] = "(\\)";
  16. speakToLeetMap_[ "O" ] = "0";
  17. speakToLeetMap_[ "S" ] = "5";
  18. speakToLeetMap_[ "T" ] = "7";
  19. speakToLeetMap_[ "V" ] = "\\/";
  20. speakToLeetMap_[ "W" ] = "`//";
  21. }
  22.  
  23. std::string translate( std::string inputString ) {
  24. bool translated = false;
  25. std::string retString = inputString;
  26. std::transform(retString.begin(), retString.end(),retString.begin(), ::toupper);
  27.  
  28. for ( std::map< std::string, std::string >::iterator stlmIterator = speakToLeetMap_.begin();
  29. stlmIterator != speakToLeetMap_.end();
  30. stlmIterator++ )
  31. {
  32. if ( retString.find( stlmIterator->first ) != std::string::npos )
  33. {
  34. std::size_t pos = retString.find( stlmIterator->first );
  35. while ( retString.find( stlmIterator->first, pos ) != std::string::npos )
  36. {
  37. retString.replace( retString.find( stlmIterator->first ), stlmIterator->first.length(), stlmIterator->second );
  38. pos += 1;
  39. }
  40.  
  41. translated = true;
  42. }
  43. }
  44.  
  45. if ( !translated)
  46. {
  47. for ( std::map< std::string, std::string >::iterator stlmIterator = speakToLeetMap_.begin();
  48. stlmIterator != speakToLeetMap_.end();
  49. stlmIterator++ )
  50. {
  51. if ( retString.find( stlmIterator->second ) != std::string::npos )
  52. {
  53. std::size_t pos = retString.find( stlmIterator->second );
  54. while ( retString.find( stlmIterator->second, pos ) != std::string::npos )
  55. {
  56. retString.replace( retString.find( stlmIterator->second ), stlmIterator->second.length(), stlmIterator->first );
  57. pos += 1;
  58. }
  59.  
  60. translated = true;
  61. }
  62. }
  63.  
  64. if ( translated )
  65. {
  66. retString[0] = std::toupper( retString[0] );
  67.  
  68. for( std::size_t i = 1 ; i < retString.length() ; ++i )
  69. retString[i] = std::tolower( retString[i] );
  70. }
  71. }
  72.  
  73. return retString;
  74. }
  75.  
  76. private:
  77. std::map< std::string , std::string > speakToLeetMap_;
  78. };
  79.  
  80. int main()
  81. {
  82. LeetSpeakTranslator instance;
  83.  
  84. std::string inputString;
  85. //for testcases
  86. int inputNumber = 0;
  87. while ( inputNumber < 5 ) {
  88. getline( std::cin, inputString );
  89. std::cout << instance.translate( inputString ) << std::endl;
  90. inputNumber++;
  91. }
  92.  
  93. return 0;
  94. }
Success #stdin #stdout 0s 16072KB
stdin
I am elite.
Da pain!
Eye need help!
3Y3 (\)33d j00 70 g37 d4 d0c70r.
1 n33d m4 p1llz!
stdout
1 4(\/) 31173.
D4 P41(\)!
3Y3 (\)33D H31P!
Eye need joo to get da doctor.
1 (\)33D (\/)4 P111Z!