String-3 countYZ

1. Coding Bat String-3 countYZ

문자열이 주어지면 'y' 또는 'z'로 끝나는 단어 수를 세십시오.
따라서 "heavy"의 'y'와 "fez"의 'z'는 세지만 "yellow"의 'y'는 세지 않습니다. (대소문자를 구분하지 않음)
바로 뒤에 알파벳 문자가 없으면 y 또는 z가 단어 끝에 있다고 말할 것입니다.
(참고: Character.isLetter(char)는 char이 알파벳 문자인지 테스트합니다.)

countYZ("fez day") → 2
countYZ("day fez") → 2
countYZ("day fyyyz") → 2


1. 고려할 사항


2. 나의 풀이

  1. 전달받은 문자열에서 'y' 혹은 'z'를 찾는다.
  2. 찾은 'y'나 'z' 뒤의 글자가 공백인지 확인한다.
  3. 문자를 대문자 혹은 소문자로 통일한다.

2-1. 첫 번째 풀이

public int countYZ(String str) {
  int count = 0;
  String[] sptstr = str.split(" ");	// " "를 기준으로 나눈다.
  for(String temp : sptstr){
    if (temp.substring(temp.length() - 1).equals(Character.toString('y')) || 
      temp.substring(temp.length() - 1).equals(Character.toString('z')))
      // 글자의 마지막이  'y' 혹은 'z'인지 확인한다.
      count++;
    }
  return count;
}

// 아니 항상 띄어쓰기로 하는게 아니네;

위의 예제는 잘못된 풀이다.

  1. 대소문자를 해결할 방법이 없다.
  2. 항상 " "를 기준으로 나누지 않는다.

2-2. 두 번째 풀이

public int countYZ(String str) {
  int count = 0;
  int len = str.length();	// 전달받은 문자의 길이를 센다.
  str = str.toLowerCase();	// 모든 문자를 소문자로 변환한다.
  
  for(int i = 0; i < len; i++){
    if (str.charAt(i) == 'y' || str.charAt(i) == 'z') {
      if( (i < len-1) && !(Character.isLetter(str.charAt(i+1))))
        count++;
      else if(i + 1 == len)
        count++;
    }
  }
  return count;
}

3. 메서드

1. length()

string 문자열의 길이를 반환한다.

 String temp = "lengthSize"
 int a = temp.length(); // a = 10

1-1. length - 배열의 길이를 반환한다.

int[] temp = new int[7];
int a = temp.length; // a = 7

1-2. size() - 컬렉션 프레임워크 타입의 길이를 반환한다.

ArrayList<Object> temp = new ArrayList<Object>();
int a = sizeTest.size(); // 0

2. toLowerCase()

문자열을 모두 소문자로 반환한다.

 String temp = "lEngThSizE"
temp = temp.toLowerCase(); // temp = "lengthsize"

2-1. toUpperCase - 문자열을 모두 대문자로 반환한다.

3. charAt(int)

원하는 인덱스의 문자를 받아온다.

String temp = "lengthWhere"
char a = temp.charAt(4); // a = 't'

3-1. indexOf(string) - 문자열 중에 입력받은 문자가 있으면 그 인덱스를 반환한다. (왼쪽부터)

3-2. lastIndexOf(string) - 문자열 중에 입력받은 문자가 있으면 그 인덱스를 반환한다. (오른쪽부터)

4. Character.isLetter(char)

받아온 문자가 문자인지 확인한다.

boolean a = Character.isLetter("8");	// a = false;
boolean b = Character.isLetter("a");	// b = true;

4-1. Character.isDigit(char) - 받아온 문자가 숫자인지 확인한다.


좋은 웹페이지 즐겨찾기