01. 문자 찾기
- 인스턴스 메소드를 사용할 때는 해당 인스턴스를 메인 함수 내에서 생성한 이후에 사용할 수 있다.
- 스캐너 문법
Scanner sc = new Scanner(System.in);
String str = sc.next(); // 문자열을 한 줄 읽어들임
char c = sc.next().charAt(0); // 문자열을 한 줄 읽어들인 후 0번째 인덱스의 문자에 접근
sc.nextByte()
sc.nextInt() //정수형 입력 및 리턴
sc.nextShort()
sc.nextLong()
sc.nextFloat()
sc.nextDouble()
sc.nextBoolean()
sc.next() // 공백 문자를 기준으로 한 단어를 읽음
sc.nextLine() // 개행 문자를 기준으로 한 줄을 읽음
- 대문자/소문자 변형
// 자바에서는 단일 문자를 입력받는 기능이 없기 때문에 이처럼 문자를 입력받아야 한다.
String str = sc.nextLine();
char c = str.charAt(0);
//문자열 대문자/소문자 변환
str = str.toUpperCase();
str = str.toLowerCase();
//문자 대문자/소문자 변환
c = Character.toUpperCase(c);
c = Character.toLowerCase(c);
- for each 구문
String str = sc.next();
char c = str.cahrAt(0);
int ans = 0;
// String 클래스는 collection계열 데이터가 아니기 때문에 CharArray로 변환해줘야 한다.
for(char t : str.toCharArray()){ if(t==c) ans++; }
02. 대소문자 변환
- 문자열 붙이기
char a = 'c';
String str1 = "string1";
String str2 = "string2";
result1 = str1 + a; //string1c
result2 = str2 + a; //string2c
result3 = str1 + str2; //string1string2
- 대소문자 검사
char a = 'a';
char A = 'A';
Character.isUpperCase(a); //false
Character.isUpperCase(A); //true
Character.isLowerCase(a); //true
Character.isLowerCase(A); //false
- 아스키코드
'a' = 65 'z' = 90 'A' = 97 'Z' = 122
03. 문장 속 단어
- 최솟값, 최댓값 설정
int min = Integer.MIN_VALUE; int max = Integer.MAX_VALUE;
- 문자열 나누기(split)
String str = "Hello World!";
String[] strarr = str.split(" ");
- indexOf와 substring 사용
String str = "It is time to study";
str.indexOf(" "); // 공백문자가 처음으로 나타나는 인덱스의 위치를 반환 / 없을 시에 -1 반환
str.indexOf("ti") // ti라는 문자열이 처음으로 나타나는 인덱스의 위치 반환/ 없을 시에 -1 반환
str.indexOf(" ", 1) // 1 인덱스 이후부터 값을 탐색한다.
str.substring(2) // 인덱스 2~끝까지 부분 문자열을 리턴한다.
str.substring(2,5) // 인덱스 2~4까지의 부분 문자열을 리턴한다.
04. 단어 뒤집기
- StringBuilder
- 자바에서 한번 생성된 String 객체는 변경이 불가능하다. 따라서 하나의 문자열을 다른 문자열과 연결하면 새 문자열이 생성되고 이전 문자열은 가비지 컬렉터로 들어가게 된다.
- 이러한 연유로 많은 문자열을 연결하게 되면 중간 문자열 객체가 많이 생성되어 비효율적인 코드가 생성된다.
- StringBuilder는 변경 가능한 문자열을 만들어 주기 때문에 String을 합치는 작업 시 하나의 대안이 될 수 있다.
- 기본적인 사용법
StringBuilder sb = new StringBuilder();
sb.append("문자열").append(" 연결");
String str = sb.toString();
- 덧붙여 StringBuffer 클래스도 사용법이 동일하니 같이 알아두자.
StringBuffer sb2 = new StringBuffer();
sb2.append("문자열").append(" 연결");
String str2 = sb2.toString();
System.out.println(sb);
System.out.println(str);
System.out.println(sb2);
System.out.println(str2);
05. 특정 문자 뒤집기
- Character.isAlphabetic()
- Character 클래스의 스태틱 메소드로 인자로 입력받은 문자가 알파벳인지 아닌지 체크해주는 메소드이다.
- String.valueOf(char[] arr)
- 문자 배열을 String 자료형으로 변환시켜주는 스태틱 메소드
06. 중복 문자 제거
일반적인 문자의 연결은 + 연산으로 함을 잊지 말자.
str.indexOf(char c)
- 인자로 입력 받은 c가 str 문자열의 몇번째 인덱스에 처음으로 등장하는지 리턴한다.
- indexOf() 메소드를 활용한 중복 문자 제거
String str = "kckkef!";
String ans = new String();
for(int i=0; i<str.length(); i++){
if((str.indexOf(str.charAt(i)) == i)){
ans += str.charAt(i);
}
}
07. 회문 문자열(Palindrome String)
- 문자열을 대문자로 변환해서 앞뒤 비교
- StringBuilder 사용해서 equals 말고 equalsIgnoreCase 사용 (대소문자 구분 없이 같은 문자열인지 비교)
08. 유효한 회문 문자열
- replace() vs replaceAll()
- 둘 다 string 객체의 메소드로 인자로 주어진 값을 다른 값으로 치환한다.
String str = "ABCDE"
String tmp1 = str.replace("BC", "F");
System.out.println(tmp1); // AFDE
String tmp2 = str.replaceAll("[ABC]", "F"); //정규식 []안에 명시된 모든 문자를 뒤에 명시된 인자로 치환하겠다는 의미
System.out.println(tmp2); // FFFDE
String tmp3 = str.replaceAll("[^ABC]", "F"); //정규식 []안에 명시된 모든 문자를 제외한 다른 문자들을 뒤에 명시된 인자로 치환하겠다는 의미
System.out.println(tmp3); // ABCFF
09. 숫자만 추출
- 아스키 코드 값 암기하기 (알파벳은 26개이다.)
char zero = '0'
System.out.println((int)zero); //48
char nine = '9';
System.out.println((int)nine); //57
char A = 'A';
System.out.println((int)A); //65
char Z = 'Z';
System.out.println((int)Z); //90
char a = 'a';
System.out.println((int)a); //97
char z = 'z';
System.out.println((int)z); //122
- Character 클래스 문자 검사 static 메소드
Character.isUpperCase(ch);
Character.isLowerCase(ch);
Character.isLetter(ch);
Character.isDigit(ch);
Character.isWhiteSpace(ch); //공백문자 체크
- Integer 클래스 static 메소드 정리
// String to Integer 타입으로 변환하는 메소드
strNum = "10";
Integer var1 = new Integer(strNum); //생성자 사용
Integer var2 = Integer.valueOf(strNum); //메소드 활용
// String to int 타입으로 변환하는 메소드
int var3 = Integer.parseInt(strNum);
// int to String
int tmp1 = 10;
String var4 = Integer.toString(tmp1);
12. 암호
//2진수로 표현된 문자를 10진수로 변환
String str = "10001";
System.out.println(Integer.parseInt(str,2)); //17
//8진수로 표현된 문자를 10진수로 변환
String str2 = "177";
System.out.println(Integer.parseInt(str2,8)); //127
//16진수로 표현된 문자를 10진수로 변환
String str3 = "ab";
System.out.println(Integer.parseInt(str3,16)); //171
// 정수를 각 진수 문자열로 변환
int num = 127;
String binaryString = Integer.toBinaryString(num); //2진수 문자열로 변환
String octalString = Integer.toOctalString(num); //8진수 문자열로 변환
String hexString = Integer.toHexString(num); //16진수 문자열로 변환
출처 레퍼런스
'코딩테스트 > 인프런 강의' 카테고리의 다른 글
05. Stack & Queue (0) | 2022.10.14 |
---|---|
04. HashMap, TreeSet (해쉬, 정렬지원 Set) (0) | 2022.10.13 |
03. Two Pointer Algorithm & Sliding Window (0) | 2022.10.11 |