C++에서 문자열을 뒤집는 다양한 방법

C++에서 문자열을 뒤집는 다양한 방법

문자열을 뒤집는 것은 단순히 문자열의 마지막 요소를 문자열의 첫 번째 위치로 대체하는 것뿐입니다.

문자열 역방향

C++에서 문자열을 뒤집는 다양한 방법은 다음과 같습니다.

  • 우리만의 역방향 함수 만들기
  • '내장' 역방향 기능 사용
  • 생성자 사용
  • 사용하여 온도 파일

1. 문자 교환을 위한 사용자 정의 역방향 함수 만들기

  • 처음부터 끝까지 접근 방식 사용 ' 을 위한' 고리

CPP




// C++ program to reverse a string> // using first to last approach> // 'for' loop> #include> using> namespace> std;> // Function to reverse a string> void> reverseStr(string& str)> {> > int> n = str.length();> > // Swap character starting from two> > // corners> > for> (> int> i = 0; i swap(str[i], str[n - i - 1]); } // Driver program int main() { string str = 'geeksforgeeks'; reverseStr(str); cout < < str; return 0; }>

산출

skeegrofskeeg 

복잡성 분석:

시간 복잡도: 에)
보조 공간: 오(1)

  • while 루프를 사용하여 처음부터 끝까지 접근 방식 사용

C++




// C++ program to reverse a string> // using while loop> #include> using> namespace> std;> // Function to reverse a string> void> reverseStr(string& str)> {> > int> len = str.length();> > int> n = len-1;> > int> i = 0;> > while> (i <=n){> > //Using the swap method to switch values at each index> > swap(str[i],str[n]);> > n = n-1;> > i = i+1;> > }> }> // Driver program> int> main()> {> > string str => 'geeksforgeeks'> ;> > reverseStr(str);> > cout < < str;> > return> 0;> }>

산출

skeegrofskeeg 

복잡성 분석:

시간 복잡도: 에)
보조 공간: 오(1)

  • 마지막에서 첫 번째 접근 방식 사용 ' ~을 위한 ' 루프

C++




// C++ program to demonstrate reverse> // of a string using Last to First> // Approach 'for' Loop> #include> using> namespace> std;> // Function to reverse a string> void> reverse(string str)> {> > for> (> int> i = str.length() - 1; i>= 0; 나--)> > cout < < str[i];> }> // Driver code> int> main(> void> )> {> > string s => 'techcodeview.com'> ;> > reverse(s);> > return> (0);> }>

산출

skeeGrofskeeG 

복잡성 분석:

시간 복잡도: 에)
보조 공간: 오(1)

  • 마지막에서 첫 번째 접근 방식 'while' 루프 사용

C++




// C++ program to demonstrate reverse> // of a string using Last to First> // Approach 'while' Loop> #include> using> namespace> std;> // Function to reverse a string> void> reverse(string str)> {> > int> len = str.length();> > int> n = len;> > while> (n--)> > cout < < str[n];> }> // Driver code> int> main(> void> )> {> > string s => 'techcodeview.com'> ;> > reverse(s);> > return> (0);> }>

산출

skeeGrofskeeG 

복잡성 분석:

시간 복잡도: 에)
보조 공간: 오(1)

1. 두 포인터 접근 방식으로 재귀 함수 사용

재귀 함수는 문자열의 다른 인덱스를 반복하는 데 사용됩니다.

C++




// C++ program to reverse a string> // using recursion> #include> using> namespace> std;> // Function to reverse a string> void> reverseStr(string& str,> int> n,> int> i)> {> > > if> (n <=i){> return> ;}> // Swapping the character> > swap(str[i],str[n]);> > reverseStr(str,n-1,i+1);> }> // Driver program> int> main()> {> > string str => 'geeksforgeeks'> ;> > reverseStr(str, str.length()-1, 0);> > cout < < str;> > return> 0;> }>

산출

skeegrofskeeg 

복잡성 분석:

시간 복잡도: 에)

보조 공간 : 에)

2. 재귀에서 단일 포인터 접근 방식 사용

다음은 코드 구현입니다.

C++




//C++ program to reverse a string using recursion> #include> using> namespace> std;> void> getreverse(string &str,> int> i)> {> > if> (i>(str.length() - 1 - i))> > {> > return> ;> > }> > swap(str[i], str[str.length() - i - 1]);> > i++;> > getreverse(str, i);> }> int> main()> {> > string name => 'geeksforgeeks'> ;> > getreverse(name, 0);> > cout < < name < < endl;> > return> 0;> }> //code contributed by pragatikohli>

산출

skeegrofskeeg 

복잡성 분석:

시간 복잡도: 에)

보조 공간: 에)

3. 내장된 역방향 기능 사용하기

알고리즘 헤더 파일에는 프로그래밍 시 시간을 절약해주는 역방향 수행을 위한 직접 함수가 있습니다.

// Reverses elements in [begin, end] void reverse (BidirectionalIterator begin,  BidirectionalIterator end); 

CPP




// C++ program to illustrate the> // reversing of a string using> // reverse() function> #include> using> namespace> std;> int> main()> {> > string str => 'geeksforgeeks'> ;> > // Reverse str[begin..end]> > reverse(str.begin(), str.end());> > cout < < str;> > return> 0;> }>

산출

skeegrofskeeg 

복잡성 분석:

시간 복잡도: 에)

보조 공간: 오(1)

4. 생성자를 사용하여 문자열 반전

역방향 반복자를 생성자에 전달하면 역방향 문자열이 반환됩니다.

CPP




// C++ program to reverse> // string using constructor> #include> using> namespace> std;> int> main()> {> > string str => 'techcodeview.com'> ;> > // Use of reverse iterators> > string rev = string(str.rbegin(), str.rend());> > cout < < rev < < endl;> > return> 0;> }>

산출

skeeGrofskeeG 

복잡성 분석:

시간 복잡도: 에)

보조 공간: 오(1)

5. 임시 문자열 사용

CPP




// C++ program to demonstrate> // reversing of string> // using temporary string> #include> using> namespace> std;> int> main()> {> > string str => 'techcodeview.com'> ;> > int> n = str.length();> > > // Temporary string to store the reverse> > string rev;> > > for> (> int> i = n - 1; i>= 0; 나--)> > rev.push_back(str[i]);> > cout < < rev < < endl;> > return> 0;> }>

산출

skeeGrofskeeG 

복잡성 분석:

시간 복잡도 : 에)

보조 공간: 오(1)

const 문자열의 역순을 어떻게 얻을 수 있나요?

const 문자열의 역순을 얻으려면 먼저 '를 선언해야 합니다. const 문자열' 우리가 선언한 사용자 정의 함수에서 원하는 객체를 호출하기 위해 다음 알고리즘을 사용합니다.

const reverseConstString = function(string) { return string.split('').reverse().join('') 

예:

C++




// C++ program to get reverse of a const string> #include> using> namespace> std;> // Function to reverse string and return> // reverse string pointer of that> char> * reverseConstString(> char> const> * str)> {> > // find length of string> > int> n => strlen> (str);> > // create a dynamic pointer char array> > char> * rev => new> char> [n + 1];> > // copy of string to ptr array> > strcpy> (rev, str);> > // Swap character starting from two> > // corners> > for> (> int> i = 0, j = n - 1; i swap(rev[i], rev[j]); // return pointer of the reversed string return rev; } // Driver code int main(void) { const char* s = 'techcodeview.com'; printf('%s', reverseConstString(s)); return (0); }>

산출

skeeGrofskeeG 

시간 복잡도: 에)
보조 공간: 에)

스택 데이터 구조 사용

C++




// C++ Program to reverse a string> #include> using> namespace> std;> int> main()> {> > string s => 'techcodeview.com'> ;> > stack <> char> >세인트;> > for> (> char> x : s)> > st.push(x);> > while> (!st.empty()) {> > cout < < st.top();> > st.pop();> > }> > return> 0;> }>

산출

skeeGrofskeeG 

복잡성 분석:

시간 복잡도: 에)

보조 공간: 에)

벡터 데이터 구조 사용

C++




// C++ Program to reverse a string> #include> using> namespace> std;> int> main()> {> > string s => 'techcodeview.com'> ;> > int> n=s.length();> > vector <> char> >것;> > for> (> int> i = n - 1; i>= 0; 나--)> > vec.push_back(s[i]);> > > for> (> auto> i:vec){> > cout < } return 0; }>

산출

skeeGrofskeeG 

복잡성 분석:

시간 복잡도: 에)

보조 공간: 에)

이 기사는 기고자: 프리얌 카카티, 쿠마리 란주, 소메쉬 아와스티.