투케이2K

186. (java/자바) 알고리즘 : 특정 문자열 포함 여부 및 개수 확인 하기 - contains, charAt, substring 사용 본문

Java

186. (java/자바) 알고리즘 : 특정 문자열 포함 여부 및 개수 확인 하기 - contains, charAt, substring 사용

투케이2K 2021. 3. 31. 08:47

/* =========================== */

[ 개발 환경 설정 ]

개발 툴 : Eclipse

개발 언어 : Java

/* =========================== */

/* =========================== */

[소스 코드]

 

package ex5;

import java.util.ArrayList;

public class MainActivity13 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println("[특정 문자열 포함 여부 및 개수 확인 하기 - contains, charAt, substring 사용]");				
		
		//전체 문자열 변수를 선언해줍니다
		String total_str = "안녕abab하세요. ab만나서 반갑습니다";
		System.out.println("전체 문자열 : "+total_str);			
		
		//특정문자 개수를 카운트하기 위한 변수 선언 실시
		int str_count = 0;
		
		//a라는 문자의 각각 인덱스 값을 저장하기 위해 배열 선언
		ArrayList a_list = new ArrayList();
		
		if(total_str.contains("ab")) { //ab 라는 문자열을 포함하는 경우
			
			/*[설 명]
			 * 1. ab 라는 문자열을 찾기 위해 먼저 a 문자가 있는 인덱스 값을 각각 배열에 담는다 
			 * 2. a 문자 인덱스 기준으로 2자리씩 문자열을 잘라서 ab 문자가 맞는지 판단한다
			 * 3. substring(시작 번지, 종료 번지 전까지) 의미입니다
			 * */
			
			//for문을 수행해 각 문자가 a값이 맞는지 확인한다
			for(int i=0; i<total_str.length(); i++) {
				if(total_str.charAt(i) == 'a') {
					a_list.add(i); //a 문자 인덱스값을 배열에 담는다
				}
			}
			
			//배열사이즈를 확인해 a문자 개수 만큼 다시 for 반복문을 수행하며 2자리씩 문자열을 잘라서 확인한다
			String pandan = "";
			for(int i=0; i<a_list.size(); i++) {
				int start_idx = Integer.valueOf(a_list.get(i).toString());
				pandan = total_str.substring(start_idx, start_idx+2);
				if(pandan.equals("ab")) { //자른 문자열이 ab 문자열과 같으면
					str_count ++; //ab 체크 카운트값을 증가시킨다
				}
			}
			
			//ab 문자 개수 확인 실시
			System.out.println("ab 개수 : "+str_count);
		}
		else {
			System.out.println("ab 개수 : "+str_count);
		}

	}//메인 종료

}//클래스 종료

/* =========================== */

[결과 출력]

/* =========================== */

/* =========================== */

[요약 설명]

* 1. ab 라는 문자열을 찾기 위해 먼저 a 문자가 있는 인덱스 값을 각각 배열에 담는다

* 2. a 문자 인덱스 기준으로 2자리씩 문자열을 잘라서 ab 문자가 맞는지 판단한다

* 3. substring(시작 번지, 종료 번지 전까지) 의미입니다

/* =========================== */

반응형
Comments