来源链接:https://www.bilibili.com/video/av31457501
将一维数组中的n个数逆序存放到数组中
#include <iostream>
using namespace std;
void Print(int arr[], int len)
{
for (int i = 0; i < len; i++)
{
cout << arr[i] << " ";
}
cout << endl;
}
//方法一: | 最优的方法
void resever(int arr[], int len)
{
for (int i = 0; i < len / 2; i++)
{
int temp = arr[i];
arr[i] = arr[len - i - 1];
arr[len - i - 1] = temp;
}
}
//方法二:
void resever(int arr[], int len)
{
for (int i = 0 , j = len - 1; i < len / 2; i++, j--)
{
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
//方法三:
void resever(int arr[], int len)
{
int i = 0;
int j = len - 1;
int temp;
while (i < j)
{
temp = arr[j];
arr[j] = arr[i];
arr[i] = temp;
i++;
j--;
}
}
//方法四:
void resever(int arr[], int len)
{
int mid = (len - 1) / 2;
int i = 0;
int j = len - 1;
int temp;
while (i <= mid && j >= mid) //前面的=号加不加都行,但是前面的加号一定得加,为了防止出错最后都加上=号
{
temp = arr[j];
arr[j] = arr[i];
arr[i] = temp;
i++;
j--;
}
}
//方法五:
void resever(int arr[], int len)
{
int mid = len / 2;
int i = 0;
int j = len - 1;
int temp;
while (i <= mid && j >= mid) //前面的=号加不加都行,但是后面的加号一定得加,为了防止出错最后都加上=号
{
temp = arr[j];
arr[j] = arr[i];
arr[i] = temp;
i++;
j--;
}
}
int main()
{
int arr[] = { 1, 4, 5, 8, 7, 10 };
int len = sizeof(arr) / sizeof(int);
cout << "数组的初始状态为:" << endl;
Print(arr, len);
resever(arr, len);
cout << "数组倒序之后为:" << endl;
Print(arr, len);
cout << endl;
system("pause");
return 0;
}
请实现一个算法,在不使用额外数据结构和储存空间的情况下,翻转一个给定的字符串(可以使用单个过程变量)。
给定一个string iniString,请返回一个string,为翻转后的字符串。保证字符串的长度小于等于5000。
测试样例:
"This is nowcoder"
返回:"redocwon si sihT"
class Reverse {
public:
string reverseString(string iniString) {
char temp; //注意是字符char,不是字符串string
int i = 0;
int j = iniString.size() - 1;
for( ; i < j; i++, j--)
{
//方法一:
temp = iniString[j];
iniString[j] = iniString[i];
iniString[i] = temp;
//方法二:
/*
iniString[i]=iniString[i]+iniString[j];
iniString[j]=iniString[i]-iniString[j];
iniString[i]=iniString[i]-iniString[j];
*/
}
return iniString;
}
};