在C ++中反转字符串的最佳编程方法

作者 : IT 大叔 本文共1696个字,预计阅读时间需要5分钟 发布时间: 2020-09-14

在C ++中,反转字符串表示翻转字符顺序以使其向后读取。有多种实现可用于反转C ++中的字符串。让我们看一下四种最佳方法。

1.使用循环

您可以main函数体内编写一个循环以反转字符串。在循环主体中,您需要使用内置swap函数,该函数将更改元素位置。

#include <iostream>
using namespace std;

int main() {
 
  string greeting = "Hello!";
  int len = greeting.length();
  int n=len-1;
  for(int i=0;i<(len/2);i++){
    swap(greeting[i],greeting[n]);
    n = n-1;

  }
  cout<<greeting<<endl;
}

在某些情况下,可能不允许您使用内置函数,因此我们需要对代码进行一些更改。

#include <iostream>
using namespace std;

int main() {
  
  string greeting = "Hello!";
  int len = greeting.length();
  int n=len-1;
  for(int i=0;i<(len/2);i++){

    char temp = greeting[i];
    greeting[i] = greeting[n];
    greeting[n] = temp;
    n = n-1;

  }
  cout<<greeting<<endl;
}

2.使用内置的反向功能

C ++具有用于反转字符串的内置函数。如果允许使用此功能,建议您放心使用。我们为此功能提供了两个输入:

  • 字符串开始的迭代器
  • 字符串结尾的迭代器
#include <iostream>
//The library below must be included for the reverse function to work
#include<bits/stdc++.h> 
using namespace std;

int main() {
  
  string greeting = "Hello!";
  //Note that it takes the iterators to the start and end of the string as arguments
  reverse(greeting.begin(),greeting.end());
  cout<<greeting<<endl;
}

3.建立自己的功能

如果我们不能使用任何内置函数,则可以编写自己的函数来反转字符串。此函数将使用递归。递归是在同一函数内调用一个函数时。看一个例子。

#include <iostream>
using namespace std;

void reverse_String(string& greet, int n,int i){

  if(n<=i){return;}

  swap(greet[i],greet[n]);
  reverse_String(greet,n-1,i+1);

}

int main() {
  
  string greeting = "Hello";
  cout<<"String before reversal: "<<greeting<<endl;
  reverse_String(greeting,greeting.length()-1,0);
  cout<<"String after reversal: "<<greeting<<endl;
  
}

4.创建一个新字符串

在没有任何内置函数的情况下,在C ++中反转字符串的最后一种方法是创建一个新字符串。我们将向后循环遍历字符串,并使用push_back方法将其元素存储在相同大小的新字符串中。

#include <iostream>
using namespace std;

int main() {
  
  string greeting = "Hello!";

  string new_greeting;

  for(int n = greeting.length()-1; n >= 0; n--){
    new_greeting.push_back(greeting[n]);
  }
  cout<<"Original string: "<< greeting << endl;
  cout<<"New reversed string: "<< new_greeting << endl;
  
}

使用push_back创建一个新字符串

免责声明:
1. 本站资源转自互联网,源码资源分享仅供交流学习,下载后切勿用于商业用途,否则开发者追究责任与本站无关!
2. 本站使用「署名 4.0 国际」创作协议,可自由转载、引用,但需署名原版权作者且注明文章出处
3. 未登录无法下载,登录使用金币下载所有资源。
IT小站 » 在C ++中反转字符串的最佳编程方法

常见问题FAQ

没有金币/金币不足 怎么办?
本站已开通每日签到送金币,每日签到赠送五枚金币,金币可累积。
所有资源普通会员都能下载吗?
本站所有资源普通会员都可以下载,需要消耗金币下载的白金会员资源,通过每日签到,即可获取免费金币,金币可累积使用。

发表评论