[Java] 12. 문자열 컨트롤 테스트 문제
in Java on Java 개발 기록
기억이 안난다.
개발을 하다 보면 아래와 같은 로직 및 개념이 필요한 경우가 생각보다 많았던거 같다. 괜히 어떤 회사에서 아래와 같이 비슷한 코딩테스트 문제를 제출한게 아닌 듯 하다. Java API에서 지원이 너무 좋아서 아래 같은 코딩은 없겠지만
// AABDEEFF 라는 문자열을 A2, E2, F2 로 출력 하라
class Main {
public static void main (String[] args) throws java.lang.Exception {
String str = "AABDEEFF";
List<String> strList = new ArrayList();
for(int i=0; i<str.length(); i++) {
strList.add(i, Character.toString( str.charAt(i) ));
}
List<String> distinctItems = new ArrayList <String> (new HashSet<String> (strList));
for (String distinctItem : distinctItems) {
int cnt = 0;
for (String s : strList) {
if (s.contains(distinctItem)) {
cnt++;
}
}
if (cnt < 2) continue;
System.out.println(">> distinctItem:" + distinctItem + cnt);
}
System.out.println(">> distinctItems:" + distinctItems);
}
}
//3443, CDEDC, YYYZZZ 문자열이 있는데 문자열을 거꾸로 출력
//같을 경우 True 아닐 경우 Flase
class Main {
public static void main (String[] args) throws java.lang.Exception {
String str = "3443,CDEDC,YYYZZ";
String[] strArr = str.split(",");
for (String s : strArr) {
System.out.println("str:" + s + ", " + reverseChk(s));
}
}
public static Boolean reverseChk(String s) {
StringBuffer sb = new StringBuffer(s);
String reverseStr = sb.reverse().toString();
//System.out.println("str:" + s + ", reverseStr:" + reverseStr);
return (s.equals(reverseStr)) ? true : false;
}
}
//연속 된 문자열을 제거하라 ABCGJ, GJ 만 출력
class Main {
public static void main (String[] args) throws java.lang.Exception {
String str = "ABCGJYZ";
List<String> strList = new ArrayList();
Character preChar = null;
Character nowChar = null;
Character nxtChar = null;
for(int i=1; i<str.length(); i++) {
preChar = str.charAt(i-1);
nowChar = str.charAt(i);
nxtChar = str.charAt(i+1);
if ((int)preChar+1 != (int)nowChar ) {
System.out.println("Char:" + nowChar );
//System.out.println("preChar:" + (int)preChar + ", " + (int)nowChar );
}
}
}
}