>  기사  >  백엔드 개발  >  모든 회문 단어가 나타나는 순서를 반대로 바꿔서 문장을 수정하세요.

모든 회문 단어가 나타나는 순서를 반대로 바꿔서 문장을 수정하세요.

WBOY
WBOY앞으로
2023-08-27 10:01:12687검색

모든 회문 단어가 나타나는 순서를 반대로 바꿔서 문장을 수정하세요.

문제 설명

총 N 단어를 포함하는 문자열 str이 제공됩니다. 주어진 문자열에서 모든 회문 단어를 찾고 모든 회문 단어의 순서를 뒤집어 새 문자열을 만들어야 합니다.

들어가세요

으아악

출력

으아악

지침

문자열에는 nayan, navjivan 및 eye의 세 가지 회문이 포함되어 있습니다. 우리는 세 단어의 순서를 모두 바꾸었고 다른 모든 단어는 동일하게 유지했습니다.

들어가세요

으아악

출력

으아악

지침

문자열에 회문 단어가 포함되어 있지 않은 것과 동일한 출력을 제공합니다.

들어가세요

으아악

출력

으아악

지침

단일 회문 단어만 포함하는 문자열과 동일한 출력을 제공합니다.

방법 1

이 방법에서는 먼저 문자열을 단어로 분할합니다. 그런 다음 모든 회문 단어를 필터링합니다. 다음으로 모든 회문의 순서를 반대로 바꿉니다.

마지막으로 문자열을 반복하고 현재 단어가 회문 단어이면 역순으로 다른 회문 단어로 바꿉니다.

알고리즘

  • 1단계 - 결과 문자열을 반환하는 인수로 문자열을 전달하여 reversePlaindromic() 함수를 실행합니다.

  • 2단계 - 단어가 회문인지 확인하는 isPalindrome() 함수를 만듭니다.

  • 2.1단계 - "시작"을 0으로 초기화하고 "끝"을 문자열 길이 - 1로 초기화합니다.

  • 2.2단계 - while 루프를 사용하여 문자열을 반복하고, 첫 번째 문자와 마지막 문자를 비교하고, 두 번째 문자와 끝에서 두 번째 문자를 비교하는 등의 작업을 수행합니다. 일치하지 않는 문자가 있으면 회문 문자열이 아니기 때문에 false가 반환됩니다.

  • 2.3단계 - 문자열이 회문이면 true를 반환합니다.

  • 3단계 - 문자열의 단어를 저장할 벡터를 만듭니다. 또한 단어를 저장하려면 "temp" 변수를 정의하세요.

  • 4단계 - for 루프를 사용하여 문자열을 반복하고 공백(' ')과 같지 않으면 임시 값에 문자를 추가합니다. 그렇지 않으면 temp 값을 allWords 벡터에 푸시합니다.

  • 5단계 - allWords 벡터를 반복하고 isPalindrome() 함수를 사용하여 현재 단어가 회문인지 확인합니다. 그렇다면 해당 단어를 "palindromWords" 벡터에 푸시하세요.

  • 6단계 - "palindromWords" 목록을 반대로 바꿉니다.

  • 7단계 - 이제 "allWords" 벡터를 다시 반복하고 현재 단어가 회문인지 확인합니다. 그렇다면 "palindromWords" 목록에서 존경받는 단어로 바꾸세요.

  • 8단계 - "palindromWords" 목록을 반복하고 결과 변수에 모든 단어를 추가하여 문자열을 만듭니다. 결과 문자열을 반환합니다.

으아악

출력

으아악
  • 시간 복잡도 - 길이가 N인 문자열을 반복하므로 O(N)입니다.

  • 공간 복잡도 - O(K) 단어를 저장하기 위해 목록을 사용하기 때문입니다. 여기서 k는 문자열의 총 단어 수입니다.

결론

우리는 문장에서 모든 회문 단어를 가져와 역순으로 추가하는 방법을 배웠습니다. 위 코드에서 프로그래머는 isPalindrome() 함수의 구현을 변경하여 새로운 것을 배울 수 있습니다.

위 내용은 모든 회문 단어가 나타나는 순서를 반대로 바꿔서 문장을 수정하세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 tutorialspoint.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제