首页 > 编程语言 >字节笔试算法题

字节笔试算法题

时间:2022-09-30 14:01:42浏览次数:49  
标签:tmp p1 字节 笔试 算法 str 字符串 string size

题目1

给定一个字符串,进行以下操作:

  1. 三个同样的字母连在一起,去掉一个:比如 helllo -> hello
  2. 两对一样的字母(AABB型)连在一起,去掉第二对的一个字母:比如 helloo -> hello
  3. 上面的规则优先“从左到右”匹配,即如果是AABBCC,虽然AABB和BBCC都是错误拼写,应该优先考虑修复AABB,结果为AABCC

数据范围:,每个用例的字符串长度满足

输入描述:
第一行包括一个数字N,表示本次用例包括多少个待校验的字符串。

后面跟随N行,每行为一个待校验的字符串。

输出描述:
N行,每行包括一个被修复后的字符串。

思路

思路1:定义一个指针p,从前往后扫描一遍,满足第1和第2条规则时p不变,处理字符串,不满足条件的其他情况下p++,直到p处于倒数第二个字符(因为满足条件至少需要3个字符),跳出循环
思路2:正则匹配

代码

#include <iostream>
#include <cstdio>
#include <vector>
#include <string>
using namespace std;

string check(string str)
{
	if (str.size() < 3)
	{
		return str;
	}
	int p1 = 0;
	while (p1 < str.size() - 1)
	{
		if (p1 + 2 < str.size() && str[p1] == str[p1 + 1] && str[p1] == str[p1 + 2])
		{
			str.erase(p1, 1);
		}
		else if (p1 + 3 < str.size() && str[p1] == str[p1 + 1] && str[p1 + 2] == str[p1 + 3])
		{
			str.erase(p1 + 2, 1);
		}
		else
		{
			p1++;
		}
	}
	return str;
}

int main()
{
	int N;
	cin >> N;
	string str;
	for (int i = 0; i < N; i++)
	{
		cin >> str;
		cout << check(str) << endl;
	}
	return 0;
}

相关函数介绍

string& erase(size_t pos=0, size_t len = npos);
//其中,参数pos表示要删除字符串的起始位置,其默认值是0;len表示要删除字符串的长度,其默认值是string::npos。返回值是删除后的字符串。

string &replace(size_t pos, size_t len, const &str)
//其中,参数pos表示要替换的字符串的起始位置;len表示要替换的字符串的长度。str是要替换成什么字符串,返回值是替换后的字符串。

错误总结

string tmp = "";
tmp = '1' + '2'; //tmp的结果不是"12",而是char('1'+'2');

//将tmp变为"12"的正确做法
tmp += '1';
tmp += '2';

标签:tmp,p1,字节,笔试,算法,str,字符串,string,size
From: https://www.cnblogs.com/hbwang1115/p/16744680.html

相关文章

  • AM5728 Opencl 案例汇总:实现sobel算法,计算向量和,矩阵转置
    案例一:实现sobel算法OpenCV(Open Source Computer Vision Library)是一个基于BSD许可开源发行的跨平台计算机视觉库。实现图像处理和计算机视觉方面的很多通用计算。......
  • 算法判断矩形和圆形相交 OBB & Circle
        转自:https://www.zhihu.com/question/24251545......
  • 算法练习-第八天【字符串】
    字符串344.反转字符串参考:代码随想录344.反转字符串思考题目要求在原地反转字符串,既然是原地反转那么可以第一时间想到双指针,一个指针指向头部,一个指向尾部,互换元素。......
  • 算法题注意事项/debug细节(Java语言)
    注意循环中的序号使用:i,j,k。看清现在在哪一层,要用哪个,不要用错。注意Java中的方法是都是值传递(pass-by-value),没有引用传递。对于对象是地址的值传递不要在循环中反......
  • Javascript 手写 LRU 算法
    LRU是LeastRecentlyUsed的缩写,即最近最少使用。作为一种经典的缓存策略,它的基本思想是长期不被使用的数据,在未来被用到的几率也不大,所以当新的数据进来时我们可以优先......
  • 网络字节序与主机字节序的转换函数实践
    网络字节序:网络字节序,是TCP/IP中规定好的一种数据表示格式,它与具体的CPU类型、操作系统等无关,从而可以保证数据在不同主机之间传输时能够被正确解释。网络字节顺序采用big......
  • 遗传算法(GA)求解旅行商问题(TSP)附MATLAB代码
    hello,大家好,今天为大家更新一期使用遗传算法(GA)求解旅行商问题(TSP)的推文。本次推文所编写的代码使用如下进化操作:1、二元锦标赛选择操作;2、OX交叉操作;3、交换、逆转和插入相......
  • 遗传算法(GA)求解容量受限的车辆路径(CVRP)问题MATLAB代码
    GA求解CVRP问题的目标函数是车辆行驶总距离最小,输入数据是solomon算例中的rc208,因为求解的是CVRP问题,所以将rc208中的后三列全部删除,剩余4列,每一列含义如下:[序号X坐标Y坐......
  • 模拟退火(SA)算法求解容量受限的车辆路径(CVRP)问题MATLAB代码
    SA求解CVRP问题的目标函数是车辆行驶总距离最小,输入数据是solomon算例中的rc208,因为求解的是CVRP问题,所以将rc208中的后三列全部删除,剩余4列,每一列含义如下:[序号X坐标Y坐......
  • 算法库
     count  计数等于 value 的元素。 intmain(){std::vector<int>v{1,2,3,4,4,3,7,8,9,10}; //确定std::vector中有多少个整数匹配目......