[Algorithm] 자바 알고리즘 정리 - 문자열편

Jifrozen·2021년 10월 3일
1

Algorithm

목록 보기
58/70

자바 알고리즘

👍 는 몇 가지 방법 중 속도가 좋은 방법에 표시하였습니다.

문자열

출력

System.out.print();
System.out.println(); -> 한줄 띄움

입력

1. Scanner

        Scanner kb = new Scanner(System.in);
        //int 받기
        int n = kb.nextInt();
        //String 받기
        String str = kb.next();
        //한 줄 받기
        String str = kb.nextLine();
        //배열 받기
        String[] str = new String[n];
        for (int i = 0; i < n; i++) {
            str[i] = kb.next();
        }

2. BufferReader + StringTokenizer👍

bufferedReader에서는 read와 readLine만 있기 때문에, 정수는 파싱이 필요

BufferReader readLine 으로 한줄을 받을 경우 문자열을 토큰으로 자를때 StringTokenizer 필요
입력값 1 2 -> a=1 b=2

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());

연속해서 받을경우

ArrayList<Integer> arr=new ArrayList<>();
    while(st.hasMoreTokens())
      arr.add(Integer.valueOf(st.nextToken()));

3. StringBuilder

1. 문자열을 연속해서 출력하는 경우

  1. for 문 이용해서 출력
for (int i = 1; i <= a; i++)
      System.out.println(i);
  }
  1. StringBuilder 이용해 문자열을 만든다.👍
    StringBuilder sb = new StringBuilder();
    for (int i = 1; i <= a; i++)
      sb.append(i + "\n");
    System.out.println(sb);

2. 문자열 뒤집기

String tmp = new StringBuilder(x).reverse().toString();

4. String

1. 문자열 for문 이용해서 char 배열 돌리기

computer -> for문으로 c / o / m / p / u / t / e / r
str을 char 배열 변환 str.toCharArray()

        for (char x : str.toCharArray()) {

        }

1. 문자열 대소문자 통일

String 의 경우
str.toUpperCase(s);
str.toLowerCase(s);

2. substring

String str="0123456789";
System.out.print(str.substring(5));

56789
인덱스 이후 값 리턴

String str="0123456789";
System.out.print(str.substring(5,7));

56

String str="It is time to study";
while((pos=str.indexOf(' '))!=-1 );

String temp=str.substring(0,pos); -> It/ is/ time ...
System.out,.println(temp);
str=str.substring(pos+1) =;

It
is
time
to
study

3. str.indexOf() 인덱스 반환

String str="0122223333";
System.out.print(str.indexOf(2));

2

중복 문자에서 가장 처음에 나오는 문자를 반환 -> 중복 없앨때 씀

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

4. replaceAll() replace()

        // replaceAll [^A-Z] -> A-Z가 아니면 다 바꾸기
        str = str.toUpperCase().replaceAll("[^A-Z]", "");
        //# -> 1* -> 0
        String tmp = str.substring(s, s + 7).replace('#', '1').replace('*', '0');

6. Integer.ParseInt()

문자열 값을 정수값으로 변환

//이진수로 받기
int num = Integer.parseInt(tmp, 2);

5. char

1. 특정 문자열

Character.isLetter('s');

2. charAt(i) 특정 인덱스의 char값 반환

String str="0123456789";
System.out.print(str.charAt(2));

2

3. 문자열 대소문자 통일

Char의 경우
Character.toUpperCase(c);
Character.toLowerCase(c);

0개의 댓글