String(문자열)

강호수·2022년 9월 3일

알고리즘 강의

목록 보기
1/7

1-1

char a = scan.next().charAt(0);
scan을 통해 char 형태로 받고 싶을 때 쓰는 방법

1-2

str.toCharArray()

// string 형태의 문자를 char 형태로 바꿈

Character.isLowerCase(ch)

// ch가 소문자일 때 true를 반환 (Upper의 경우에도 같다)

1-3

while ((pos = str.indexOf(' ')) != -1) {
	String tmp = str.substring(0, pos);
  int len = tmp.length();
  if (len > m) {
	  m = len;
    answer = tmp;
  }
str = str.substring(pos + 1);
}

/** while (String 안에 공백이 없어질 때까지)
		tmp는 띄어쓰기 전까지 자른 단어 한개
		----
		str을 한 단어 없애고 자름

1-4

public ArrayList<String> solution(int n, String[] str) {
	ArrayList<String> answer = new ArrayList<>();
	for (String x : str) {
		String tmp = new StringBuilder(x).reverse().toString();
		answer.add(tmp);
	}
	return answer;
}

/** ArrayList의 크기는 배열과 다르게 가변적이다.
		StringBuilder는 그냥 출력 불가능 -> toString() 붙여줘야한다. (아마 주소값..?)
		StringBuilder의 내장메서드로 reverse()가 있는데, 단어를 거꾸로 돌려준다.

1-5

Character.isAlphabetic(a)

// a가 알파벳이면 true를 반환 (앞에 !를 붙여 특수문자 가려낼 수 있다)

1-6

String answer = "";
for (int i=0; i<str.length(); i++){
	if (str.indexOf(str.charAt(i)) == i){
		answer += str.charAt(i);
	}
}

/** indexOf 메서드는 예를들어 a를 찾는다 하였을 때 가장 먼저 나오는 것을 불러냄
		이 특성을 이용해 첫번째 나오는 것의 순서와 i가 같다면 그것은 한번만 나온 문자이다

1-8

public String solution(String s) {
	String answer = "NO";
	s = s.toUpperCase().replaceAll("[^A-Z]", "");
	String tmp = new StringBuilder(s).reverse().toString();
	if(s.equals(tmp))
		answer = "YES";
	return answer;
}

/** 위에서 쓴 replaceAll -> A-Z를 제외한 모든 것들은 없앤다

1-9

public String solution(String s) {
	String answer = "NO";
	s = s.replaceAll("[^0-9]", "");
	answer = String.valueOf(Integer.parseInt(s));
	return answer;
}

/** s에서 자연수만 빼고 삭제
		Integer.parseInt(s) -> 숫자같이 생긴 문자열을 숫자로 바꿔줌 (기본 10진수)
		String.valueOf() -> String으로 바꿔준다.
			** .toString()과 null 값 반환 방식이 다르다
public int solution(String s) {
	String answer = "";
    for (char x : s.toCharArray()){
    	if(Character.isDigit(x)) answer += x;
    }
    return Integer.parseInt(answer);
}

두가지 방법이 있는데 isDigit(x)를 써서 숫자를 판별할 수도 있다.

1-12

String answer = "";
for (int i = 0; i < n; i++) {
	String tmp = s.substring(0, 7).replace('#', '1').replace('*', '0');
	int num = Integer.parseInt(tmp, 2);
	answer += (char) num;
	s = s.substring(7);
}
return answer;

/** s에서 7글자를 따로 뺀 후 replace(#을 1로 대체, *을 0으로 대체)한다
		Integer.parseInt(tmp, 2) -> tmp라는 숫자를 2진수 기준 10진수 Int값으로 바꿈
		num을 char형식으로 casting
		s.substring(7)을 이용해 앞의 7글자를 없앤다

0개의 댓글