[프로그래머스/181878] 원하는 문자열 찾기
in Study / Coding Test
☑️ 문제
☑️ 풀이
첫 번째 풀이
- 대/소문자 관련한 메서드가
Character.toLowerCase()
/Character.toUpperCase()
밖에 없는 줄 알고, 반복문을 통해 문자열의 문자를 하나씩 체크한 뒤 바꿔주었다.
//시간: 33.22ms
//메모리: 98.2MB
class Solution {
public int solution(String myString, String pat) {
int answer = 0;
for (int i = 0; i < myString.length(); i++) {
char c1 = myString.charAt(i);
if (Character.isLowerCase(c1)) {
myString = myString.replace(c1, Character.toUpperCase(c1));
}
}
System.out.println(myString);
for (int i = 0; i < pat.length(); i++) {
char c2 = pat.charAt(i);
if (Character.isLowerCase(c2)) {
pat = pat.replace(c2, Character.toUpperCase(c2));
}
}
System.out.println(pat);
for(int i = 0; i < myString.length(); i++) {
if (i <= myString.length() - pat.length()) {
String str = myString.substring(i, i + pat.length());
if (str.equals(pat)) {
return 1;
}
}
}
return 0;
}
}
두 번째 풀이
- 문자열 자체를 대/소문자로 변경하는데
toLowerCase()
/toUpperCase()
를 쓸 수 있었다. - 훨씬 더 간단하게 풀 수 있는 문제였다.
//시간: 32.15ms
//메모리: 107MB
class Solution {
public int solution(String myString, String pat) {
myString = myString.toLowerCase();
pat = pat.toLowerCase();
for(int i = 0; i < myString.length(); i++) {
if (i <= myString.length() - pat.length()) {
String str = myString.substring(i, i + pat.length());
if (str.equals(pat)) {
return 1;
}
}
}
return 0;
}
}
☑️ 문법 정리 - toLowerCase()와 toUpperCase()
toUpperCase(), toLowerCase()
- 문자열의 모든 문자를 대/소문자로 변환한다.
- 변환 결과는 원본 문자열을 변경하지 않아, 반드시 반환값을 사용해야 한다.
String str = "Hello World!";
String lower = str.toLowerCase(); // "hello world!"
String upper = str.toUpperCase(); // "HELLO WORLD!"
문자(Character) 단위 변환
- 문자 단위 변환은
Character
클래스의toUpperCase(char)
,toLowerCase(char)
를 사용한다. - 변환 결과는 원본 문자를 변경하지 않아, 반드시 반환값을 사용해야 한다.
char ch = 'A';
char lower = Character.toLowerCase(ch); // 'a'
char upper = Character.toUpperCase(ch); // 'A'