오늘의 문제는 9. Palindrome Number 입니다.
앞으로 해도 뒤로 해도 똑같은 우병우 가 아니라
앞으로 해도 뒤로 해도 똑같은 숫자를 구별하라는 문제 입니다.
제가 만든 스크립트는 아래와 같습니다.
class Solution {
public boolean isPalindrome(int x) {
boolean returnValue = true; // 일단 리턴 값을 담을 변수를 만들고 초기값은 true로 설정한다.
String temp = Integer.toString(x); // 나중에 charAt을 사용할 예정이므로 int 입력값 을 스프링으로 변환한다.
int left = 0; // left는 0
int right = temp.length()-1; // right는 입력값 길이 -1
while(left < right) { // left 가 right 보다 작을 때까지 while 문 실행
if(temp.charAt(left++) != temp.charAt(right--)){ // 입력값의 왼쪽 값과 오른쪽 값이 다를 경우 if 문 실행
returnValue = false; // 다를 경우 리턴값은 false 가 된다.
}
}
return returnValue; // 리턴값을 리턴한다.
}
}
다른 사람이 만든 스크립트를 보자.
class Solution {
public boolean isPalindrome(int x) {
String s1 = Integer.toString(x);
//passing x in the below statement won't work(idk why)
StringBuilder s2 = new StringBuilder(s1).reverse();
return s2.toString().equals(s1);
//s2.toString() == s1 -> compares string references --> hence use .equals()
}
}
내꺼 보다 훨씬 간단하다.
이 사람은 StringBuilder의 reverse 함수를 사용했다.
원래 입력값과 reverse한 값이 같으면 true 다르면 false를 리턴한다.
Python 으로는 아래와 같이 할 수 있다.
class Solution:
def isPalindrome(self, x: int) -> bool:
s = str(x)
return s == s[::-1]
마지막 줄이 좀 이해가 안기는데......
list[<start>:<stop>:<step>]
- start (optional)- Starting index value where the slicing of the object starts. Default to 0 if not provided.
- stop – Index value until which the slicing takes place.
- step (optional) – Index value steps between each index for slicing. Defaults to 1 if not provided.
문법은 이렇다. 그리고 이렇게 작동한다.
>>> a = '1234'
>>> a[::-1]
'4321'
Step이 -1 이면 reverse를 하기된다.
a = '1234'
print a[::2]
13
스텝이 2 이면 한 개 건너 뛴 값이 선택 된다.
a = '1234'
print a[3:0:-1]
432
이렇게 되면 세번째 까지만 리버스 된다.
a = [1, 2, 3, 4, 5, 6, 7, 8] print(a[:5]) ==> output 1,2,3,4,5
a = [1, 2, 3, 4, 5, 6, 7, 8]
print(a[3:])
Output: [4, 5, 6, 7, 8]
a = [1, 2, 3, 4, 5, 6, 7, 8]
print(a[3:5])
Output: [4, 5]
a = [1, 2, 3, 4, 5, 6, 7, 8]
print(a[3:7:2])
Output: [4, 6]
a = [1, 2, 3, 4, 5, 6, 7, 8]
print(a[:5]) # prints [1, 2, 3, 4, 5]
print(a[2:]) # prints [3, 4, 5, 6, 7, 8]
print(a[2:5]) # prints [3, 4, 5]
print(a[2:7:2]) # prints [3, 5, 7]
You can index the last index of a sequence by using -1 :
a = [1, 2, 3, 4, 5, 6]
print(a[-1]) # prints 6
print(a[2:-1]) # prints [3, 4, 5]
You can flip a sequence by using the [::-1] slice notation:
a = [1, 2, 3, 4, 5, 6]
print(a[::-1]) # prints [6, 5, 4, 3, 2, 1]
'etc. > Leetcode' 카테고리의 다른 글
Leetcode - 27. Remove Element - Easy (0) | 2022.08.18 |
---|---|
Leetcode - 26. Remove Duplicates from Sorted Array - Easy (0) | 2022.08.18 |
Leetcode - 20. Valid Parentheses - Easy (0) | 2022.08.14 |
Leetcode - 14. Longest Common Prefix - Easy (0) | 2022.08.11 |
Leetcode - 13. Roman to Integer - Easy (0) | 2022.08.08 |
미국 테크니컬 인터뷰 문제 풀이 - Reverse words in a sentence. (0) | 2022.08.03 |
Iterator basic (0) | 2022.07.31 |
Leetcode - 242. Valid Anagram : Easy (0) | 2022.07.31 |
Leetcode - 442. Find All Duplicates in an Array (0) | 2022.07.26 |
JAVA - Find duplicate letters in a String (0) | 2022.07.26 |