관리 메뉴

Partially Committed

[Algorithm] Palindrome Check λ³Έλ¬Έ

πŸ”₯ Algorithm || λ¬Έμ œν’€μ΄/PS

[Algorithm] Palindrome Check

WonderJay 2022. 10. 26. 22:49
728x90
λ°˜μ‘ν˜•
SMALL

  였늘 닀뀄볼 상황은 λ¬Έμžμ—΄μ΄ μ£Όμ–΄μ‘Œμ„ λ•Œ, Palindrome 인지 μ•„λ‹Œμ§€ Check ν•˜λŠ” 것이닀. Palindrome μ΄λž€ String 을 거꾸둜 λ’€μ§‘μ—ˆμ„ λ•Œ μ›λ³Έμ΄λž‘ λ™μΌν•œ 것을 μ˜λ―Έν•œλ‹€. 예λ₯Ό λ“€μ–΄ abcdcba λŠ” reverse 해도 abcdcba μ΄λ―€λ‘œ Palindrome 이닀. μ–΄λ–»κ²Œ μ•Œκ³ λ¦¬μ¦˜μ„ ꡬ성할 수 μžˆμ„κΉŒ?

 

  κ°€μž₯ λ¨Όμ € λ– μ˜¬λ¦΄ 수 μžˆλŠ” ν’€μ΄λŠ” μ‹€μ œλ‘œ λ¬Έμžμ—΄μ„ 뒀집은 λ‹€μŒ μ›λž˜ λ¬Έμžμ—΄κ³Ό λΉ„κ΅ν•΄μ„œ 같은지 μ•„λ‹Œμ§€λ₯Ό νŒλ‹¨ν•˜λŠ” 것이닀. μ•„λž˜μ™€ 같이 μ½”λ“œλ₯Ό μž‘μ„±ν•  수 μžˆλ‹€.

using namespace std;

// time  : O(N)
// space : O(N)

bool isPalindrome(string str) {
	// Write your code here.
	string reverse = "";
	for (int i = str.size() - 1; i >= 0; i--) {
		reverse.push_back(str[i]);
	}
	if (str == reverse) return true;
	return false;
}

μœ„μ™€ 같이 μž‘μ„±ν•œ 경우, μ‹œκ°„ λ³΅μž‘λ„ O(N) κ³΅κ°„λ³΅μž‘λ„ O(N) 에 ν•΄κ²°ν•  수 μžˆλ‹€.

 

  보닀 효율적인 방법은 νˆ¬ν¬μΈν„° μ•Œκ³ λ¦¬μ¦˜μ„ μ΄μš©ν•˜λŠ” 것이닀. λ¬Έμžμ—΄μ˜ μ‹œμž‘κ³Ό 끝의 인덱슀λ₯Ό μ˜λ―Έν•˜λŠ” left 와 right λ₯Ό μ΄μš©ν•˜μ—¬ string[left] 와 string[right] λ₯Ό λΉ„κ΅ν•˜λŠ” 것이닀. μ½”λ“œλŠ” μ•„λž˜μ™€ κ°™μœΌλ©° μ‹œκ°„ λ³΅μž‘λ„ O(N), 곡간 λ³΅μž‘λ„ O(1) 에 ν•΄κ²°ν•  수 μžˆλ‹€.

using namespace std;

// time  : O(N)
// space : O(1)
bool isPalindrome(string str) {
	// Write your code here.
	int left = 0; int right = str.size() - 1;
	while (left < right) {
		if (str[left++] != str[right--]) return false;
	}
	return true;
}

 

https://github.com/versatile0010/AlgoExpert

 

GitHub - versatile0010/AlgoExpert: Solutions to AlgoExpert Problems.

Solutions to AlgoExpert Problems. Contribute to versatile0010/AlgoExpert development by creating an account on GitHub.

github.com

 

728x90
λ°˜μ‘ν˜•
LIST
Comments