私の解決策:
クラスソリューション{ パブリック: INT isPalindromic(文字列s、int型のサイズ、INT LEN){ ため(= 0のI int型、iは+大きさ<= LEN; iは++){ //チェックS [I]〜S [I +はサイズ1 ] int型J = 0; (J <サイズ/ 2)一方{ 場合(S [iがjは+] =のS [iはサイズ1-Jを+]!) ブレーク。 J + = 1; } IF(J ==サイズ/ 2)リターンI。 } -1を返します。 } 文字列longestPalindrome(文字列s){ int型LEN = s.size()。 (INT sublen = LEN;> 0 sublen; sublen - )用{ INT RET = isPalindromic(S、sublen、LEN)。 IF(RET> = 0)戻りs.substr(RET、sublen)。 } 戻りS。 } }。
他の男のソリューション:
クラスソリューション{ パブリック: ストリングlongestPalindrome(文字列s) { int型SLEN = s.length()、MAXLEN = 0、maxStart = 0。 int型I = 0、L = 0、R = 0、LEN = 0。 (iは<= SLEN-MAXLEN / 2)しながら、 { L = R = I。 一方、(R <SLEN-1 && S [R + 1] == S [R])R ++。 I = R + 1。 一方、(L> 0 && R <SLEN-1 && S [R + 1] == S [L-1])l--、R ++。 LEN = R-L + 1。 IF(MAXLEN <LEN)MAXLEN = LEN、maxStart = L。 } 戻りs.substr(maxStart、MAXLEN)。 } }。