SEB/Daily Coding
[DailyCoding] 16 | isIsogram
kexon
2022. 8. 11. 18:19
✏️ Description
문자열을 입력받아 아이소그램인지 여부를 리턴
- 입력: String
- 출력: boolean
- 입출력 예시
boolean output = isIsogram("aba"); // false output = isIsogram("Dermatoglyphics"); // true output = isIsogram("moOse"); // false
📝 Flow
- 입력받은 문자열을 하나씩 잘라서 => split()
- 문자열 배열에 담아서 순회 => forEach
- 같은 문자가 있는지 앞뒤로 읽어오면서 비교 => indexOf, lastIndexOf
- 문자 비교해서 같은게 있으면 false 리턴
🤯 Trouble
- 대소문자는 구별하지 않는다고 해서 a == A 로 생각했다. ⇒ 값이 안나옴
- a ≠ A
📚 TIL
- indexOf(”찾을 특정 문자”, “시작할 위치”)
- 시작할 위치는 생략이 가능하고, 생략할 경우 0번째 인덱스부터 찾음
- 찾는 글자가 없으면 -1 리턴
- lastIndexOf(”찾을 특정 문자”, “시작할 위치”) ⇒ 오른쪽에서부터 찾음
- 찾는 글자가 없으면 -1 리턴
- 주의점
- 뒤에서부터 인덱스 위치를 세주는게 아니라 앞에서(왼쪽 → 오른쪽)부터 위치한 인덱스를 반환
- 지정된 문자열에서 indexOf()와 lastIndexOf() 메서드가 동일한 값을 반환하는 경우, 문자열에 반복되는 문자가 없는 것
👩🏻💻 Implementation
if(str.equals("")) return true;
str = str.toLowerCase();
String[] word = str.split("");
for(String strArr : word) {
if(str.indexOf(strArr) != str.lastIndexOf(strArr)) {
return false;
}
}
return true;
💬 Thought
- reference에서는 HashMap을 사용했다. 전혀 생각하지 못했는데 레퍼런스 잘 보고 다음에 다시 풀어봐야겠다.