string Five::longestPalindrome(string s)
{
//int left = 0, right = 0;
//for (int i = 0; i < s.size(); i++)
//{
// for (int j = s.size()-1; i < j; j--)
// {
// if (j - i < right - left) continue;
// bool isPalin = true;
// for (int k = 0; k < (j-i+1)/2; k++)
// {
// if (s[i+k] != s[j-k])
// {
// isPalin = false;
// break;
// }
// }
// if (isPalin)
// {
// left = i;
// right = j;
// }
// }
//}
//return s.substr(left, right - left + 1);
int sLen = s.size(), start = 0, maxLen = 1;
int left, right;
for (int i = 0; i < sLen;)
{
left = right = i;
while (right + 1 < sLen && s[right] == s[right + 1]) right++;
i = right+1;
while (0 <= left && right < sLen && s[left] == s[right]) { left--; right++; }
if (right - left - 1 > maxLen) { start = left + 1; maxLen = right - left - 1; }
}
return s.substr(start,maxLen);
}
c++에서 정수끼리 연산하면 소수점 자릿수들은 생각 안하고 아예 버려버린다
Marine::Marine() : hp(50), coord_x(0), coord_y(0), damage(5), is_dead(false) {}
생성자 이름 뒤에 오는 것을 초기화 리스트 (initailizer list)라고 부른다.
static 멤버 변수 : '클래스' 하나에 종속된다. 프로그램이 종료될 때 소멸된다.
int& access_x() { return x; }
int get_x() { return x; }
void show_x() { std::cout << x << std::endl; }
int& c = a.access_x();
c = 4;
a.show_x();
// 아래는 오류
// int& e = a.get_x();
// e = 2;
// a.show_x();
get_x로 가져온 int는 값을 복사한 임시 객체라서 레퍼런스로 만들 수 없음
C 정의 : 좌측값은 대입 시에 왼쪽 오른쪽 다 들어갈 수 있는 식, 우측값은 오직 오른쪽에만 오는 식
C++ 정의 : 좌측값은 어떠한 메모리 위치를 가리키고, & 연산자로 위치 참조 가능. 우측값은 좌측값이 아닌 값들.