Javascript - Palindrome dài nhất trong một chuỗi

Palindrome dài nhất trong một chuỗi

Viết một hàm JavaScript trả về palindrome dài nhất trong một chuỗi .

Lưu ý: Theo Wikipedia "Trong khoa học máy tính, bài toán chuỗi con palindromic dài nhất hoặc bài toán nhân tố đối xứng dài nhất là bài toán tìm chuỗi con liền kề có độ dài tối đa của một chuỗi đã cho cũng là một palindrome. Ví dụ, chuỗi con palindromic dài nhất của" bananas" là " anana ". Chuỗi con palindromic dài nhất không được đảm bảo là duy nhất; ví dụ: trong chuỗi" abracadabra ", không có chuỗi con palindromic có độ dài lớn hơn ba, nhưng có hai chuỗi con palindromic có độ dài ba, cụ thể là, "aca" và "ada".
Trong một số ứng dụng, có thể cần phải trả về tất cả các chuỗi con palindromic tối đa (nghĩa là, tất cả các chuỗi con tự là palindromes và không thể được mở rộng thành các chuỗi con palindromic lớn hơn) thay vì chỉ trả về một chuỗi con hoặc trả về độ dài tối đa của chuỗi con palindromic.

Ví dụ:

JavaScript: The longest palindrome in a specified string

Mã nguồn:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>Write a JavaScript function that returns the longest palindrome in a given string</title>
<script>
function is_Palindrome(str1) {
var rev = str1.split("").reverse().join("");
return str1 == rev;
}

function longest_palindrome(str1){

var max_length = 0,
maxp = '';

for(var i=0; i < str1.length; i++) 
{
var subs = str1.substr(i, str1.length);

for(var j=subs.length; j>=0; j--) 
{
var sub_subs_str = subs.substr(0, j);
if (sub_subs_str.length <= 1)
continue;

if (is_Palindrome(sub_subs_str))
{
if (sub_subs_str.length > max_length) 
{
max_length = sub_subs_str.length;
maxp = sub_subs_str;
}
}
}
}

return maxp;
}
document.write(longest_palindrome("abracadabra"));

document.write(longest_palindrome("HYTBCABADEFGHABCDEDCBAGHTFYW12345678987654321ZWETYGDE")); 
</script>
</head>
<body>

</body>
</html>

Xem ví dụ

Lưu đồ thuật toán:

Flowchart:JavaScript function: The longest palindrome in a specified string

 



Chatbot Tư vấn Lộ trình CNTT 🤖
Chào bạn! Tôi có thể tư vấn về các lộ trình học CNTT dựa trên roadmap.w3typing.com. Hãy chọn một từ khóa dưới đây hoặc gõ câu hỏi của bạn (ví dụ: "Frontend", "Backend", "Python", "DevOps").