字符串部分逆置

这道题很久以前写过,字节跳动一面的时候也让写的是这道题,所以还是写出来了哈哈哈

把www.toutiao.com逆置成com.toutiao.www

#include
#include
using namespace std;

void reverse_str(string &str, int low, int high)
{
	char tmp;
	while (low < high)
	{
		tmp = str[low];
		str[low] = str[high];
		str[high] = tmp;
		low++;
		high--;
	}
}

void reverse(string &str)
{
	if (str.empty())
		return;

	int low = 0;
	int high = str.size() - 1;
	//先全部进行反转
	reverse_str(str, low, high);

	int i = 0;
	int j = 0;
	while (j < str.size() && i < str.size())
	{
		//以.为分割符,再分别逆置每一部分
		if (str[j] == ' ')
		{
			reverse_str(str, i, j - 1);
			i = j + 1;
			j = j + 1;
		}
		else
		{
			++j;
		}
	}

	//逆置最后一部分
	if(str[j] == '\0')
		reverse_str(str, i, j - 1);
}

int main()
{
	string str;
	//cin >> str;
	getline(cin, str);

	cout << str << endl;
	reverse(str);
	cout << str << endl;
	return 0;
}

你可能感兴趣的:(刷题)