문자 "A"와 "B"로 이루어진 문자열 myString과 pat가 주어집니다. myString의 "A"를 "B"로, "B"를 "A"로 바꾼 문자열의 연속하는 부분 문자열 중 pat이 있으면 1을 아니면 0을 return 하는 solution 함수를 완성하세요.
replace를 사용하면 될거같은데, 한번에 두개를 몽땅 바꾸는건 안될거고... 그럼 앞에 바꾼 A가 다시 B로 바뀌게 되지 않나??
아이디어를 chatGPT에 물어봤다. 임시문자열로 변환을 시켜주면되는구나
class Solution {
public int solution(String myString, String pat) {
int answer = 0;
if(myString.contains("A")){
myString.replace("A","temp");
}else if(myString.contains("B")){
myString.replace("B","A");
}
myString.replace("temp","B");
if(myString.contains(pat)){
answer = 1;
} else {
answer = 0;
}
return answer;
}
}
왜 반대의 대답이 나오는거지?
전혀 저장이 되지 않고있는데
replace
return : a string derived from this string by replacing every occurrence of oldChar with newChar.
참조 : https://docs.oracle.com/javase/8/docs/api/java/lang/String.html#replace-char-char-
replace는 지금 주어진 문자열이 아니라 바꾸고 난 후에 새로운 문자열을 반환하기때문에 저장이 되야한다! 그래서 전혀 반영이 되지 않고 있었다.
class Solution {
public int solution(String myString, String pat) {
int answer = 0;
String tempMyString = myString.replace("A","temp");
String tempMyString2 = tempMyString.replace("B","A");
String resultMyString = tempMyString2.replace("temp","B");
if(resultMyString.contains(pat)){
answer = 1;
} else {
answer = 0;
}
return answer;
}
}