Advertisement
Guest User

Untitled

a guest
Mar 20th, 2019
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.94 KB | None | 0 0
  1. #include <iostream>
  2. #include <algorithm>
  3. #include <string>
  4. using namespace std;
  5. class Solution {
  6. public:
  7. string longestPalindrome(string s) {
  8. string result;
  9.  
  10. int max = 0;
  11. for(int i = 1; i< s.size()-1; i++) {
  12.  
  13. if ( s.at(i-1)==s.at(i+1) ) {
  14. string value = Palindrome(s, i-1, i+1);
  15. if (max < static_cast<int>(value.size()) ) {
  16. result = value;
  17. max = value.size();
  18. }
  19. }
  20.  
  21. if( s.at(i-1) == s.at(i) ) {
  22. string value = Palindrome(s, i-1, i);
  23. if (max < static_cast<int>(value.size()) ) {
  24. result = value;
  25. max = value.size();
  26. }
  27. }
  28.  
  29. if( s.at(i) == s.at(i+1) ) {
  30. string value = Palindrome(s, i, i+1);
  31. if (max < static_cast<int>(value.size()) ) {
  32. result = value;
  33. max = value.size();
  34. }
  35. }
  36.  
  37. }
  38. return result;
  39. }
  40. string Palindrome(string s, int left, int right) {
  41. int min_size = std::min(left, static_cast<int>(s.size()-(right+1)));
  42. for (int i=0; i<=min_size; i++ ) {
  43. if (s.at(left) == s.at(right)) {
  44. left--;
  45. right++;
  46. }
  47. else break;
  48. }
  49. left++;
  50.  
  51. string_view total = s.substr(left, right-left);
  52.  
  53. return string(total);
  54. }
  55. };
  56.  
  57. int main()
  58. {
  59. Solution sol;
  60. string s;
  61. {
  62. s = "AbAaaSTRoRTSaaF";
  63. cout << sol.longestPalindrome(s) << endl;
  64. }
  65. {
  66. s = "babad";
  67. cout << sol.longestPalindrome(s) << endl;
  68. }
  69. {
  70. s = "cbbd";
  71. cout << sol.longestPalindrome(s) << endl;
  72. }
  73. {
  74. s = "cbdd";
  75. cout << sol.longestPalindrome(s) << endl;
  76. }
  77. return 0;
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement