일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Union-find
- dfs
- Calendar
- javascript
- priority_queue
- 스택
- GC로그수집
- Properties
- set
- 힙덤프
- union_find
- date
- CSS
- List
- map
- sql
- BFS
- math
- spring boot
- deque
- html
- scanner
- 스프링부트
- string
- 큐
- JPA
- Java
- 리소스모니터링
- alter
- NIO
- Today
- Total
목록알고리즘/String (10)
매일 조금씩
class Solution { public String mergeAlternately(String word1, String word2) { StringBuilder merged = new StringBuilder(); int maxLength = Math.max(word1.length(), word2.length()); for(int i = 0; i
이 또한 중간 확장법을 사용해서문자열의 문자하나를 기준점으로 찍으면서각각에 홀수, 짝수로 나눠서 팰린드롬 갯수를 카운트 했다. class Solution { private int count = 0; // 팰린드롬 수 public int countSubstrings(String s){ if(s.length() = 0 && end
이것 또한 투포인터를 사용해야하는 문제이다.다만 최대 길이의 palindrome 문자열을 찾아야한다. 난두가지 방법을 생각했다.첫번째 문자부터 마지막 문자를 가리키는 포인터를 앞당기며 찾음. (가장자리 -> 가운데 방향으로 palindrome 탐색)문자 하나씩을 기준으로 삼고 양쪽으로 확장하며 찾음. (가운데 -> 가장자리 방향으로 palindrome 탐색)1번은 시간복잡도 O(n^3), 2번은 시간복잡도 O(n^2)이다.따라서, 2번의 중심확장방식이 더 효율적이다. 팰린드롬(palindrome) 문제는 '좌우대칭'이라는 팰린드롬의 특성에 따라, 시간복잡도를 줄이기 위해 최대길이 문제는 가운데 기준점을 찍으며 찾아가는 2번 방식이 효율적이다. 1번 방식)class Solution { public S..
20. Valid Parentheses 문제를 풀때는 괄호가 선입후출로 다 닫히는지 보는문제였기 때문에 Stack을 사용했다.그러나 이문제는 Palindrome 문제로문자, 기호, 숫자 등이 포함된 문자열에서 문자와 숫자가 대칭을 이루는지 확인하는 문제이다. 따라서 Stack을 사용하기보다 투 포인터로 가장자리부터 문자와 숫자를 만나면 두 포인터가 가리키는 문자/숫자가 일치하는지 확인하는 방식으로 진행하는 것이 공간복잡도는 O(1)이고, 시간복잡도는 O(N) 으로 효율적이다. class Solution { public boolean isPalindrome(String s) { if(s.isEmpty()){ return true; } int l..
Stack 사용하면 됨! class Solution { public boolean isValid(String s) { Stack stack = new Stack(); for(int i = 0; i
anagram 문제는 char[]로 만들어서 알파벳순으로 재정렬한 후, 찾는 것이 핵심이다.여기선 HashMap을 사용해서 재정렬된 단어를 키로 해서 그단어의 anagram인 것들을 value에 넣는 방법을 사용했다. class Solution { public List> groupAnagrams(String[] strs) { Map> map = new HashMap(); for(String word : strs){ // 단어를 알파벳순으로 재정렬 char[] chars = word.toCharArray(); Arrays.sort(chars); String sorted = new String(ch..