반응형
해당 글에서는 문자열 중 문자를 맨 앞으로 보내거나 맨 뒤로 보내는 방법에 대해 알아봅니다.
1) 문자열 내의 마지막 문자를 가장 앞으로 보내기
1. 문자열 내의 마지막 문자를 1번 가장 앞으로 보내기
💡 문자열 내의 문자를 1번 가장 앞으로 보내기
- 주어진 문자열에서 마지막 문자를 가장 앞으로 1번 보내는 방법입니다.
💡 moveCharFirst() 함수
1. 마지막 문자를 추출합니다.
2. 첫번째 문자부터 마지막 문자 이전까지 문자열을 재구성합니다.
3. 마지막 문자에 구성한 첫번째 문자에서부터 마지막 문자 이전까지를 합쳐 재구성합니다.
/**
* 문자열 내의 마지막 문자를 가장 앞으로 보내기
*
* @return
*/
@GetMapping("/9")
public ResponseEntity<ApiResponse<?>> question09() {
String answer = "";
String helloStr = "안녕하세요";
answer = moveCharFirst(helloStr);
// 결과값 :: 세요안녕하
System.out.println("결과값 :: " + answer);
ApiResponse<Object> ar = ApiResponse
.builder()
.result(answer)
.resultCode(SUCCESS_CODE)
.resultMsg(SUCCESS_MSG).build();
return new ResponseEntity<>(ar, HttpStatus.OK);
}
/**
* 문자열 내의 마지막 문자를 가장 앞으로 보내는 함수
* @param str
* @return
*/
public static String moveCharFirst(String str) {
char lastChar = str.charAt(str.length() - 1);
String restOfString = str.substring(0, str.length() - 1);
return lastChar + restOfString;
}
2. 문자열 내의 마지막 문자를 n번 가장 앞으로 보내기
💡 문자열 내의 문자를 n번 가장 앞으로 보내기
- 주어진 문자열에서 마지막 문자를 가장 앞으로 n번 반복하여 보내는 방법입니다.
💡 rotation 값(이동횟수)에 따라서 첫번째 문자를 반복적으로 뒤로 보내는 형태로 구성을 합니다.
/**
* 문자열 내의 마지막 문자를 가장 앞으로 보내기
*
* @return
*/
@GetMapping("/9")
public ResponseEntity<ApiResponse<?>> question09() {
String answer = "";
String helloStr = "안녕하세요";
int rotation = 3; // 회전 횟수
for (int i = 0; i < rotation; i++) {
helloStr = moveCharFirst(helloStr);
}
answer = helloStr;
// 결과값 :: 하세요안녕
System.out.println("결과값 :: " + answer);
ApiResponse<Object> ar = ApiResponse
.builder()
.result(answer)
.resultCode(SUCCESS_CODE)
.resultMsg(SUCCESS_MSG).build();
return new ResponseEntity<>(ar, HttpStatus.OK);
}
/**
* 문자열 내의 마지막 문자를 가장 앞으로 보내는 함수
* @param str
* @return
*/
public static String moveCharFirst(String str) {
char lastChar = str.charAt(str.length() - 1);
String restOfString = str.substring(0, str.length() - 1);
return lastChar + restOfString;
}
2) 문자열 내의 첫번째 문자를 가장 뒤로 보내기
1. 문자열 내의 첫번째 문자를 1번 가장 뒤로 보내기
💡 문자열 내의 문자를 1번 가장 뒤로 보내기
- 주어진 문자열에서 첫번째 문자를 가장 맨뒤로 1번 보내는 방법입니다.
💡 moveCharLast() 함수
1. 0번 인덱스(첫번째 문자)를 제외한 문자열을 재구성합니다.
2. 첫번째 문자를 재구성합니다.
3. 두번째 문자부터 구성한 문자열과 첫번째 문자를 합하여 재구성합니다.
/**
* 문자열 내의 첫번째 문자를 가장 뒤로 보내기
*
* @return
*/
@GetMapping("/10")
public ResponseEntity<ApiResponse<?>> question10() {
String answer = "";
String helloStr = "안녕하세요";
answer = moveCharLast(helloStr);
// 결과값 :: 녕하세요안
System.out.println("결과값 :: " + answer);
ApiResponse<Object> ar = ApiResponse
.builder()
.result(answer)
.resultCode(SUCCESS_CODE)
.resultMsg(SUCCESS_MSG).build();
return new ResponseEntity<>(ar, HttpStatus.OK);
}
/**
* 문자열 내의 첫번째 문자를 가장 뒤로 보내기
*
* @param str
* @return
*/
public static String moveCharLast(String str) {
String restOfString = str.substring(1);
char firstChar = str.charAt(0);
return restOfString + firstChar;
}
2. 문자열 내의 첫번째 문자를 n번 가장 뒤로 보내기
💡 문자열 내의 문자를 n번 가장 뒤로 보내기
- 주어진 문자열에서 첫번째 문자를 가장 맨뒤로 n번 반복하여 보내는 방법입니다.
💡 rotation 값(이동횟수)에 따라서 첫번째 문자를 반복적으로 마지막으로 보내는 형태로 구성을 합니다.
/**
* 문자열 내의 첫번째 문자를 가장 뒤로 보내기
*
* @return
*/
@GetMapping("/10")
public ResponseEntity<ApiResponse<?>> question10() {
String answer = "";
String helloStr = "안녕하세요";
int rotation = 3; // 회전 횟수
for (int i = 0; i < rotation; i++) {
helloStr = moveCharLast(helloStr);
}
answer = helloStr;
// 결과값 :: 세요안녕하
System.out.println("결과값 :: " + answer);
ApiResponse<Object> ar = ApiResponse
.builder()
.result(answer)
.resultCode(SUCCESS_CODE)
.resultMsg(SUCCESS_MSG).build();
return new ResponseEntity<>(ar, HttpStatus.OK);
}
/**
* 문자열 내의 첫번째 문자를 가장 뒤로 보내기
*
* @param str
* @return
*/
public static String moveCharLast(String str) {
String restOfString = str.substring(1);
char firstChar = str.charAt(0);
return restOfString + firstChar;
}
오늘도 감사합니다. 😀
반응형
'Java > Short 개발' 카테고리의 다른 글
[Java/Short] SecureRandom을 이용한 랜덤 숫자/문자(난수) 생성 방법 (0) | 2024.01.22 |
---|---|
[Java/Short] 직렬화/역 직렬화 방법 : jackson-binding (0) | 2024.01.04 |
[Java/Short] 배열을 반으로 나누어 재구성 방법 : for, Arrays.copyOfRange (0) | 2023.11.03 |
[Java/Short] 문자열의 접두사(prefix) / 접미사(suffix) 찾는 방법 : startsWith, endsWith (0) | 2023.09.29 |
[Java/Short] 약수를 구하는 다양한 방법 : int to divisor (0) | 2023.06.11 |