본문 바로가기
프로그래밍/Java

[Java / 자바의 정석 / Java 기초] 문자열 쉬프트하기

by Mr.noobiest 2024. 1. 11.

자바

 

문자열 쉬프트


어떠한 문자열을 좌 또는 우측으로 쉬프트(이동)하는 코드가 있다, 잘안쓰지만 for문과 String을 이해하기 좋은 문제이다.

 


 

 

한칸만 움직이기


코드는 간단하다, 문자열의 길이를 기준으로 -1로 옮겨준다음, 옮김으로서 없어진 첫번째 문자를 맨 뒤에 더해준것이다.
ex) String_A="ABCDE"라면, "BCDE" + "A" 형태로 해준 것이다. 

//한칸 우측이동
public static String shift(String s) {
    return s.charAt(s.length()-1)+s.substring(0, s.length()-1);
}

 

 


 

 

응용문제(쉬프트를 연속해서 한바퀴 돌기)


코드 자체는 아주 간단하다, 위에서 작성한 함수 shift를 문자열의 길이만큼 for문으로 반복 실행하는 것이다.

//한바퀴 돌기
public static void main (String[] args) throws java.lang.Exception {
    String input = "Stackoverflow";
    for(int i = 0; i <= input.length(); i++){
        System.out.println(input);
        input = shift(input);
    }
}



#실행결과
Stackoverflow
wStackoverflo
owStackoverfl
lowStackoverf
flowStackover
rflowStackove
erflowStackov
verflowStacko
overflowStack
koverflowStac
ckoverflowSta
ackoverflowSt
tackoverflowS
Stackoverflow


이를 응용하면, 아래 문제도 풀 수 있다. (문자열 2개를 비교하여 쉬프트한 값인지 검증하는 문제)

 

[Java / Java의 정석 / 자바 기초] 문자열을 쉬프트 하기(+쉬프트한 문자열 비교하기)

문자열 쉬프트 JAVA 문제중 입력값 String_A와 String_B를 비교하여, String_B가 String_A를 쉬프트했을때의 모양인지 여부를 확인하는 코드 이다. 예를들어 String_A="abc"라면 String_A를 쉬프트한 값은 "abc" / "b

mrnoobiest.tistory.com

 

끝.

728x90
반응형