Notice
Recent Posts
Recent Comments
Link
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Tags more
Archives
Today
Total
관리 메뉴

kimgusxo 님의 블로그

문자열(String) 본문

Algorithm

문자열(String)

kimgusxo 2025. 2. 12. 04:47

1. 문자열(String)이란?

- 자바에서 문자열은 String 클래스로 표현되며, 불변(immutable) 특성을 갖고 있다. 즉 한 번 생성된 문자열은 변경할 수 없고 수정이 필요할 때마다 새로운 문자열 객체가 생성된다.

- 이러한 특성 때문에 메모리 관리와 쓰레드 안정성 측면에서는 장점으로 작용하지만 변경이 잦을경우 StringBuffer나 StringBuilder를 사용하자!

 

2. 주요 메소드

- length(): 문자열의 길이를 반환한다.

String str = "Hello";
System.out.println(str.length());  // 출력: 5

 

- charAt(int index): 해당 인덱스의 문자를 반환한다.

String str = "Hello";
System.out.println(str.charAt(1)); // 출력: 'e'

 

- substring(int beginIndex, int endIndex): 지정된 범위의 부분 문자열을 추출한다.

String str = "Hello";
System.out.println(str.substring(1, 4));  // 출력: "ell"

 

- indexOf(String str): 특정 문자열이 처음 등장하는 인덱스를 반환하며 없으면 -1을 반환한다.

String str = "Hello";
System.out.println(str.indexOf("lo"));  // 출력: 3

 

- split(String regex): 정규 표현식을 기준으로 문자열을 분리하여 배열로 반환한다.

String data = "Java,Python,C++";
String[] languages = data.split(","); // 결과: ["Java", "Python", "C++"]

 

3. 기본 문자열 알고리즘

3-1. 팰린드롬(Palindrome) 검사

- 팰린드롬은 앞에서 읽으나 뒤에서 읽으나 똑같은 문자열을 의미한다.

public static boolean isPalindrome(String str) {
    int left = 0;
    int right = str.length() - 1;
    
    while (left < right) {
        if (str.charAt(left) != str.charAt(right)) {
            return false;
        }
        left++;
        right--;
    }
    return true;
}

System.out.println(isPalindrome("radar"));  // 출력: true
System.out.println(isPalindrome("hello"));  // 출력: false

 

3-2. 애너그램(Anagram) 검사

- 애너그램은 두 문자열이 동일한 문자 구성을 가지는지 검사하는 것이다.

public static boolean isAnagram(String s1, String s2) {

    if (s1.length() != s2.length()) return false;
    
    char[] c1 = s1.toCharArray();
    char[] c2 = s2.toCharArray();
    
    Arrays.sort(c1);
    Arrays.sort(c2);
    
    return Arrays.equals(c1, c2);
}

System.out.println(isAnagram("listen", "silent"));  // 출력: true
System.out.println(isAnagram("hello", "world"));    // 출력: false

'Algorithm' 카테고리의 다른 글

힙(Heap)  (1) 2025.02.20
덱(Deque)  (0) 2025.02.17
큐(Queue)  (0) 2025.02.16
스택(Stack)  (1) 2025.02.15
리스트(List)  (0) 2025.02.14