인프런 자바 알고리즘 문제풀이 입문 - 1. String(문자열) 1

dev-mage·2022년 10월 20일
0
post-thumbnail
post-custom-banner

1-1. 문자 찾기

문자열에서 대소문자 구분 없이 특정 문자 찾기

String

  • equalsIgnoreCase() 사용
public static int solution(String word, String letter) {
    int answer = 0;
    for(int i = 0; i < word.length(); i++) {
        if(String.valueOf(word.charAt(i)).equalsIgnoreCase(letter)) {
            letterCount++;
        }
    }
    return answer;
}

Character

  • 모든 문자를 대문자나 소문자 중 한 가지로 통일
    • 기본 for문 - charAt() 로 비교

      public static int solution(String word, char letter) {
          int answer = 0;
          word = word.toUpperCase();
          letter = Character.toUpperCase(letter);
          for(int i = 0; i < word.length(); i++) {
              if(word.charAt(i) == letter) answer++;
          }
          return answer;
      }
    • 향상된 for문 - String을 toCharArray() 를 통해 문자형 배열로 전환 후 비교

      public static int solution(String word, char letter) {
          int answer = 0;
          word = word.toUpperCase();
          letter = Character.toUpperCase(letter);
          for(char c : word.toCharArray()) {
              if(c == letter) answer++;
          }
          return answer;
      }

1-2. 대소문자 변환

대문자는 소문자로 소문자는 대문자로 변환

ASCII 코드 참고

  • 65 ~ 90: 대문자 / 97 ~ 122: 소문자
  • 소문자에서 32를 빼면 대문자로 변경 가능
public static String solution(String word) {
    StringBuilder answer = new StringBuilder();
    for(char c : word.toCharArray()) {
        c = (char) (c < 97 ? c + 32 : c - 32);
        answer.append(c);
    }
    return answer.toString();
}

Character 클래스 메서드 사용

  • Character.isLowerCase() 또는 Character.isUpperCase() 사용
public static String solution(String word) {
    StringBuilder answer = new StringBuilder();
    for(char c : word.toCharArray()) {
        c = Character.isLowerCase(c) ? 
						Character.toUpperCase(c) : Character.toLowerCase(c);
        answer.append(c);
    }
    return answer.toString();
}

1-3. 문장 속 단어

문장에서 특정 단어 찾기

split()

  • 문장을 split() 으로 나눠 문자열 배열 생성
for (String word : sentence.split(" ")) {
    ...
}

indexOf()와 substring()

  • indexOf() 로 공백 문자의 인덱스를 찾아 substring() 으로 자르기
  • 문자열에서 공백 문자를 더이상 발견할 수 없을 때까지 문장에서 단어를 잘라가며 찾기
  • 문자열 끝에 공백 문자가 없는 경우 마지막 단어는 체크하지 못함. 반복문 밖에서 한 번 더 처리 필요
int index = 0;
while ((index = sentence.indexOf(' ')) != -1) {
    String word = sentence.substring(0, index);
    ...
    sentence = sentence.substring(index + 1);
}
// 마지막 단어에 대한 처리

자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비 - 인프런 | 강의

post-custom-banner

0개의 댓글