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ụ:
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>
Lưu đồ thuật toán: