游游的7的倍数
输入一个数字,再添加一个数字,构成一个新的7的倍数的,请输出该数字(已验证必有答案,可能答案不唯一,输出任意一个即可)
输入范围[1,10000]
例子:
输入:1
输出:21
输入:15
输出:105
自己的思路:0%
1.如果原数字本就是7的倍数,直接在最后添加0;
2.如果不是……没想出来,想着如果是暴力求解,遍历从原数字开始到添加一位的最大值,7为step,但是大概率会超时,尤其是如果数字很大的话。
游游的01串
输入一个只包含01的字符串,可以对第i个字符1取反,代价为i。输出最小代价,使得相邻字符不同。
输入范围,字符串长度[1,20000]
例子:
输入:0111
输出:3 第3个字符取反就可以了,起始下标是1
思路:finish
1.由于最后的结果不是101……,就是010……的形式,那么首先根据输入字符串的长度,生成两个参考字符串r1=101……,r2=010……
2.遍历原字符串,分别与r1,r2对比,如果插入不同的列表(i+1),因为只有0或者1,所以对于原字符来说,肯定与r1或者r2中的一个相等
3.输出两个列表求和中小的那个
游游的连续子串
输入仅包含小写的字符串,取连续字符子串,使得子串中不同字母种类不超过k个,问字串长度的最大值
输入范围,字符串长度n[1,20000]
例子:
输入:5,3
aabcd
输出:4 即aabc
思路:完成10% 超时
1.将切分的字串变成set,计算其长度,判断是否超过k
2.从大到小,遍历所有长度的子串,一个个判断,结果超时了,估计字符串太长了
游游的字母子串
输入一个n行m列仅包含大小字母的矩阵,q次操作选一子矩阵进行大小写转换,输出所有操作结束后的矩阵
例子:
输入:2 3 2 (n m q)
aBc
AaD
1 1 2 3 (x1,y1,x2,y2) 左上角和右下角 坐标不记得了
1 2 2 3
输出:
ABC
AAd 可能不太对,不记得了
思路:通过42.31% 超时
1.将这些字母,按照一个个字符保存在二维列表中
2.根据坐标范围,遍历判断,字母大小写反转
3.根据q的次数循环
改进思路:每次操作都做反转耗时,建议每次操作记录对应坐标的变换次数,然后根据这个标志位,最后一次性变化,如偶数保持不变,奇数反转。 那么就是简历一个同样大小的二维标志矩阵,然后记录反转次数,或者0,1反转。