[プログラマー/CPP/JS]最長のファリン症候群
11196 ワード
[程序]最长的法林德龙
1.質問
前後を逆さまにしても、同じ文字列を「回文」と呼ぶ.
文字列sが与えられた場合、解関数を完了し、sの部分文字列(Substring)の中で最も長いパリンドロン長を返します.
たとえば、文字列sがabcdcbaの場合、7を返し、abacdeの場合、3を返します.
2.制限
3.解答
4.最初のコードと異なる点
for
の複文を書いた.통과했다.
5.コード
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int solution(string s){
int answer=1;
int len = s.size();
for(int i=1; i<len-1; i++){
int count=0;
int maxLen = min(i, len-i+1);
for(int j=1; j<=maxLen; j++){
if(s[i-j] != s[i+j]) break;
count++;
}
answer = max(answer, count*2+1);
}
for(int i=0; i<len-1; i++){
int count=0;
int maxLen = min(i, len-i-2);
for(int j=0; j<=maxLen; j++){
if(s[i-j] != s[i+j+1]) break;
count++;
}
answer = max(answer, count*2);
}
return answer;
}
6.コード(JS)
function solution(s) {
const isPalindrome = word => {
let left = 0;
let right = word.length - 1;
while (left < right) {
if (word[left++] !== word[right--]) return false;
}
return true;
};
const len = s.length;
for (let i = len; i > 1; i--) {
for (let j = 0; j <= len - i; j++) {
if (isPalindrome(s.slice(j, j + i))) return i;
}
}
return 1;
}
Reference
この問題について([プログラマー/CPP/JS]最長のファリン症候群), 我々は、より多くの情報をここで見つけました https://velog.io/@e7838752/programmers-palindromeテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol