📝[プログラマー]最長のファリンドロン
4871 ワード
千裕隣開発ブログの投稿。を参照し、解析済みと注記してください.
前後を逆さまにしても、同じ文字列を「回文」と呼ぶ.
文字列sが与えられた場合、解関数を完了し、sの部分文字列(Substring)の中で最も長いパリンドロン長を返します.
たとえば、文字列sがabcdcbaの場合、7が返され、abacdeの場合、3が返されます.
I/O例#1
文字列sが4番目の「d」に対して空であるため、7を返します.
I/O例#2
2番目の位置「b」を基準に、「aba」はパリン症候群になるため、3に戻る.
問題の説明
前後を逆さまにしても、同じ文字列を「回文」と呼ぶ.
文字列sが与えられた場合、解関数を完了し、sの部分文字列(Substring)の中で最も長いパリンドロン長を返します.
たとえば、文字列sがabcdcbaの場合、7が返され、abacdeの場合、3が返されます.
せいげんじょうけん
문자열 s의 길이 : 2,500 이하의 자연수
문자열 s는 알파벳 소문자로만 구성
I/O例
I/O例説明
I/O例#1
文字列sが4番目の「d」に対して空であるため、7を返します.
I/O例#2
2番目の位置「b」を基準に、「aba」はパリン症候群になるため、3に戻る.
私の答え
function solution(s) {
// 앞뒤로 같은 수 만큼 연속되는 문자열을 모두 검사하는 코드
// ex ) i === 7 ? 'abcdcba'
// ex ) i === 6 ? 'abcdcb' , 'bcdcb'
// ...
for(let i = s.length ; i > 0 ; i--) {
for(let j = 0 ; j <= s.length - i ; j ++) {
if(isPalindrome(s.slice(j,i+j))) return i
}
}
function isPalindrome(str) {
// 절반을 나누어 i 번째와 문자열의 끝에서 i-1 번째가 다르다면 팰린드롬 X
const half = Math.floor(str.length/2)
for(let i = 0 ; i < half ; i ++) {
if(str[i] !== str[str.length-i-1]) return false
}
return true
}
}
Reference
この問題について(📝[プログラマー]最長のファリンドロン), 我々は、より多くの情報をここで見つけました https://velog.io/@kwb020312/프로그래머스-가장-긴-팰린드롬テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol