Contains Duplicate <- 이 문제 풀면서 알게 된 것
HashSet
set의 성질을 그대로 상속 받음. 중복을 자동으로 제거 해줌.
HashSet<Integer> set1 = new HashSet<Integer>();
set1.add(1); 값 추가
만약에 입력되는 값이 내부에 존재하지 않는다면 저장,
존재한다면 false를 리턴
set1.remove(1) 1 제거
set1.clear() 모든 값 제거
Iterator iter = set1.iterator();
while(iter.hasNext())
(1) HashSet 이용
class Solution {
public boolean containsDuplicate(int[] nums) {
if(nums==null || nums.length==0)
return false;
HashSet<Integer> set = new HashSet<Integer>();
for(int elem : nums){
if(!set.add(elem)){
return true;
}
}
return false;
}
}
(2)
class Solution {
public boolean containsDuplicate(int[] nums) {
if(nums==null || nums.length==0)
return false;
HashMap<Integer,Integer> map = new HashMap<>();
for(int i=0;i<nums.length;i++){
map.put(nums[i],map.getOrDefault(nums[i],0)+1);
}
boolean flag = true;
for(int key : map.keySet()){
if(map.get(key)>=2){
flag=true;
break;
}else{
flag=false;
}
}
return flag;
}
}
Capitalize
a short sentence -> A Short Sentence
1. 첫 글자는 따로 처리 let word = str[0].toUpperCase();
2. 다음부터는 앞에 띄어쓰기 되어있으면 Capitalize
for(let i =1;i<str.length;i++){
if(str[i-1]==" "){
word+=str[i].toUpperCase();
}else{
word+=str[i]
}
Anagram
정규식 사용법 RegExp
1. replace를 사용해서 띄어쓰기, 느낌표등을 없앰
-> word.replace(/[^\w]/g,"") ->!혹은space ""으로 바꿔줌
2. 모두 toLowerCase()해주고
3. 다 나눠주고 split('')
4. sort해서 순서 바꾸고
5. join해서 한 문장으로 다시 만들어주기
=> 이렇게 했을 때 같으면 anagram 아니면 false
Chunk
배열을 크기 만큼 짜르기
예를 들어, arr=[1,2,3,4,5] 숫자=2 => [[1,2],[3,4],[5]] 이런식으로
1. 답을 넣을 배열을 만들기
2. slice(시작,끝)
array.slice(index,index+size) -> index는 0에서 시작, size는 2
그리고 index+=size -> 다시 처음으로