https://school.programmers.co.kr/learn/courses/30/lessons/120908?language=java
public int solution(String str1, String str2) {
int answer = 0;
answer = str1.contains(str2)?1:2;
return answer;
}
String.contains()String.contains()이 있었음https://school.programmers.co.kr/learn/courses/30/lessons/120822
class Solution {
public String solution(String my_string) {
String answer = "";
StringBuilder sb = new StringBuilder(my_string);
answer = sb.reverse().toString();
return answer;
}
}
StringBuilder.reverse()StringBuilder.toString()String 문자열 조작(수정)하는 건 StringBuilderhttps://school.programmers.co.kr/learn/courses/30/lessons/181845
class Solution {
public String solution(int n) {
String answer = "";
answer = Integer.toString(n);
return answer;
}
}
class Solution {
public String solution(int n) {
String answer = "";
answer = String.valueOf(n);
return answer;
}
}

Integer.toString()String.valueOf() toString()은 변수의 경우 보이는 값을 문자열로 변환하고, 객체혹은 배열은 다르게 동작함Wrapper클래스에 존재함https://school.programmers.co.kr/learn/courses/30/lessons/181848
class Solution {
public int solution(String n_str) {
int answer = 0;
answer = Integer.parseInt(n_str);
return answer;
}
}
Integer.parseInt()https://school.programmers.co.kr/learn/courses/30/lessons/181849
public int solution(String num_str) {
int answer = 0;
for (char c : num_str.toCharArray()){
answer += c-'0';
}
return answer;
}
public int solution(String num_str) {
int answer = 0;
for (char c : num_str.toCharArray()){
answer += Integer.parseInt(Character.toString(c));
}
return answer;
}
https://school.programmers.co.kr/learn/courses/30/lessons/181864
public int solution(String myString, String pat) {
int answer = 0;
StringBuilder sb = new StringBuilder();
for (char c : myString.toCharArray()){
if(c == 'A') sb.append('B');
else if (c=='B') sb.append('A');
}
answer = sb.toString().contains(pat)?1:0;
return answer;
}
toCharArray()toString()contains()https://school.programmers.co.kr/learn/courses/30/lessons/181875
public String[] solution(String[] strArr) {
String[] answer = {};
answer = strArr.clone();
for(int i = 0 ; i < answer.length;i++){
if (i%2==0) {
answer[i] = answer[i].toLowerCase();
}else{
answer[i] = answer[i].toUpperCase();
}
}
return answer;
}
String.toUpperCase()String.toLowerCase()Object.clone()Object는 자바의 최상위 클래스https://school.programmers.co.kr/learn/courses/30/lessons/181878
public int solution(String myString, String pat) {
int answer = 0;
answer = myString.toLowerCase().contains(pat.toLowerCase())?1:0;
return answer;
}
String.toLowerCase()String.contains()https://school.programmers.co.kr/learn/courses/30/lessons/181907
public String solution(String my_string, int n) {
String answer = "";
answer = my_string.substring(0,n);
return answer;
}
String.substring(int beginIndex, int endIndex)https://school.programmers.co.kr/learn/courses/30/lessons/181910
public String solution(String my_string, int n) {
String answer = "";
answer = my_string.substring(my_string.length()-n);
return answer;
}
String.length()https://school.programmers.co.kr/learn/courses/30/lessons/181911
public String solution(String[] my_strings, int[][] parts) {
String answer = "";
StringBuilder sb = new StringBuilder();
for (int i=0 ;i<my_strings.length;i++){
sb.append(my_strings[i].substring(parts[i][0],parts[i][1]+1));
}
answer = sb.toString();
return answer;
}
StringBuilder.toString()https://school.programmers.co.kr/learn/courses/30/lessons/181915
public String solution(String my_string, int[] index_list) {
String answer = "";
StringBuilder sb = new StringBuilder();
for(int idx : index_list){
sb.append(my_string.charAt(idx));
}
answer = sb.toString();
return answer;
}
String.charAt(int index)StringBuilder는 append()메소드를 오버로드 하고 있어서 문자도 추가가능append(char c)https://school.programmers.co.kr/learn/courses/30/lessons/181945
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String a = sc.next();
StringBuilder sb = new StringBuilder();
for (int i =0;i<a.length();i++){
sb.append(a.charAt(i)+"\n");
}
System.out.println(sb);
}
https://school.programmers.co.kr/learn/courses/30/lessons/120850
public int[] solution(String my_string) {
my_string = my_string.replaceAll("[a-z]","");
int[] answer = new int[my_string.length()];
for (int i = 0; i < answer.length ; i++){
answer[i] = my_string.charAt(i)-'0';
}
Arrays.sort(answer);
return answer;
}
replaceAll(String regex, String replacement)
.split("")으로 나누는 방법도 있음https://school.programmers.co.kr/learn/courses/30/lessons/181940
public String solution(String my_string, int k) {
String answer = my_string.repeat(k);
return answer;
}
repeat(int count)https://school.programmers.co.kr/learn/courses/30/lessons/120911
public String solution(String my_string) {
char[] cArr = my_string.toLowerCase().toCharArray();
Arrays.sort(cArr);
return new String(cArr);
}
public String(char[] value) String으로 변환할때 생성자 패턴을 사용함 객체들만 가능함 https://school.programmers.co.kr/learn/courses/30/lessons/181866
public String[] solution(String myString) {
String[] answer = {};
myString = myString.replaceAll("(^x+)|(x+$)","");
answer = myString.split("x+");
Arrays.sort(answer);
return answer;
}
String.replace() vs String.replaceAll()
replace(CharSequence target, CharSequence replacement)는regex를 지원하지 않는다..!replaceAll(String regex, String replacement)만 regex지원함
split()은 또 regex 지원하네
https://school.programmers.co.kr/learn/courses/30/lessons/12916
boolean solution(String s) {
s = s.toLowerCase();
int ps = s.length() - s.replace("p","").length();
int ys = s.length() - s.replace("y","").length();
return ps == ys;
}
replace(char oldChar, char newChar)는 문자 1개를 문자1개로 바꾸기 때문에 빈문자로는 못바꾼다. 대신 replace(CharSequence target, CharSequence replacement)로 문자열 -> 문자열 로 변환하면 된다.https://school.programmers.co.kr/learn/courses/30/lessons/181871
public int solution(String myString, String pat) {
int answer = 0;
int plength = pat.length();
for (int i = 0; i < myString.length()-(plength-1);i++){
if(myString.substring(i,i+plength).equals(pat)) answer++;
}
return answer;
}
슬라이딩 윈도우 방식
- 윈도우 크기를 유지하면서
substring을 이용해 패턴 찾는 아이디어 좋음
equals(Object anObject) vs ====는 객체의 경우 주소가 같은 동일한 객체 여부를 조사하는 반면equals는 객체의 경우 객체가 가진 값을 조사한다.기본 타입의 경우 둘은 동일하게 동작한다.public String solution(String myString, String pat) {
return myString.substring(0,myString.lastIndexOf(pat)+pat.length());
}

https://school.programmers.co.kr/learn/courses/30/lessons/181905
public String solution(String my_string, int s, int e) {
String answer = "";
StringBuilder sb = new StringBuilder(my_string.substring(s,e+1));
sb.reverse();
return my_string.substring(0,s)+sb.toString()+my_string.substring(e+1);
}
substring에서 범위가 (0,0) 이런식으로 되면 빈 문자열을 리턴함
public String solution(String my_string, int s, int e) {
String answer = "";
StringBuilder sb1 = new StringBuilder(my_string);
StringBuilder sb2 = new StringBuilder(my_string.substring(s,e+1));
sb2.reverse();
return sb1.replace(s,e+1,sb2.toString()).toString();
// return my_string.substring(0,s)+sb.toString()+my_string.substring(e+1);
}
replace(int start, int end, String str)StringBuilder가 제공하는 메소드를 적극 활용하자.