-
카테고리
-
세부 분야
알고리즘 · 자료구조
-
해결 여부
해결됨
만약 문자열이 매칭되는 조건("arrest", "test")이 문자열의 인덱스 기준 뒤에서부터 발생하면 어떻게 풀어야할까요?
21.06.08 17:32 작성 조회수 279
2
만약 "arrest", "test" 처럼 두 개의 문자열 비교시 매칭되는 문자열이 "est"로 뒤에서부터 맞춰진다면 이런 경우는 어떻게 풀어야 할까요?
답변을 작성해보세요.
1
푸샵맨 코딩스터디
지식공유자2021.06.08
DevAndy님 안녕하세요~
코딩 열심히 하시고 계신가요??
질문주신내용 : 만약 "arrest", "test" 처럼 두 개의 문자열 비교시 매칭되는 문자열이 "est"로 뒤에서부터 맞춰진다면 이런 경우는 어떻게 풀어야 할까요?
=======================================================
문자열의 마지막부터 읽는게 없어서 조작을 해야겠죠.
아래 2개의 경우를 생각하게 됩니다.
저는 1번을 선택합니다.
1. 뒤에서 읽는게 귀찮으니 , 최초에 받은걸 revers 하는 방법
문자열을 reverse에서 기존로직에 태우는방법
test => tset 이런식으로
arrest => tserra
2. 문자열 length를 이용해서 마지막 문자부터 하나씩 잘라서 (substring 으로 )
새로운 StringBuilder에 하나씩 담아서 비교하기..좀 골치가 아플거 같네요
1번 방법 소스입니다.
1번방법 소스입니다.
package String;
public class Test_charAt_03 {
public static void main(String[] args) {
// String str[] = { "test", "teacher" };
String str[] = { "test", "arrest" };
System.out.println(new Test_charAt_03().solve(str));
}
public String solve(String[] strs) {
if (strs.length == 0)
return "";
//1. reverse
String[] strArray = new String[strs.length];
for (int i = 0; i < strs.length; i++) {
String str = strs[i];
StringBuilder sb = new StringBuilder();
for (int j = str.length() - 1; j >= 0; j--) {
char c = str.charAt(j);
System.out.println("c " + c);
sb.append(c);
strArray[i] = sb.toString();
}
}
//2. 기존로직
String firstStr = strArray[0];
for (int i = 1; i < strArray.length; i++) {
while (strArray[i].indexOf(firstStr) != 0) {
firstStr = firstStr.substring(0, firstStr.length() - 1);// test, test, te
}
}
//3 얻은 값 다시 reverse
StringBuilder reStr = new StringBuilder();
for (int i = firstStr.length() - 1; i >= 0; i--) {
char c = firstStr.charAt(i);
reStr.append(c);
}
return reStr.toString();
}
}
}
DevAndy
질문자2021.06.09
코드까지 이렇게 다 작성해주시다니..!
들어온 데이터를 reverse해서 기존 로직으로 검증을 하면 되는거였군요.
감사합니다!! 열심히 그리고 즐겁게 코딩하겠습니다..!
답변 1