2011-11-09 2 views
0

방금 ​​숙제에서 문제가 끝났습니다.이 목적은 문자열 내에서 가장 긴 회문을 찾는 것입니다. 그래서 "hellomomomkk"문자열이있는 경우 momom을 다음과 같이 반환합니다. 이 주어진 문자열의 가장 긴 회상.왜 자바와 문자열 길이로 작동합니까?

isPalindrome은 정확하게 말하면, 부분 문자열이 회문 일 경우 true 또는 false를 반환합니다. 내 질문은 이것이다. 내가하는 이유는 무엇입니까

for(int j = i; j <= s.length(); j++) 

내 코드는 작동합니까 ?? 내가 할 경우지만

for(int j = i; j < s.length(); j++) 

내 코드가 파손되고, 문자열이 "안녕하세요"인 경우, j는 문자의 실제 양이 4 0 카운트에서 시작 5에 종료하지만 것인가? 그렇다면 < = 코드에 오류가없는 이유는 무엇입니까? 왜 작동합니까?

답변

1
substring(i, j) 

j (두 번째 arg)는 해당 색인에서 문자의 왼쪽에있는 것으로 간주됩니다.

문자열을 사용하면

s.substring(i, j) 

을 수행 할 때 내가 일본을 제외한 J를 경작한다에서 하위 문자열이기 때문이다

"A" 
"A".substring(0, 1); 

returns "A", as it ends before the character in slot 1 (which doesn't exist) 
+0

오! 이제 알 겠어. 명확히 해줘서 고마워! – Matt

1

s.substring()은 종료 색인을 제외합니다.

+0

지금은 기다릴 내가 무엇을, 롤 혼란 스러워요 최종 색인을 제외한다는 의미입니까? – Matt

1

입니다 그래서 그래서 만약 그런

i = 0 
j = 5 

문자열 경우 5 자 (u로 말한 것)를 포함하지만 0-4 색인 (i : e 0, 1, 2, 3, 4)을 포함합니다.

like if i = 2 and j = 6 

문자열이 (J - 난 = 6-2) 포함 4 자 index2 - index5 (I : E 2, 3, 4, 5)

관련 문제