nyoj359Delete it

Delete it

时间限制: 2000 ms  |  内存限制: 65535 KB
难度: 2
描述

克林在打一行字母时总是会打多一个字符,比如想打july”时会打成juuly”,这样他需要删掉其中一个u’

克林想知道他可以删掉哪个位置的字符就可以变成他真正想打的一行字母。

输入
第一行一个整数:T (测试个数)

每个测试
输入两行,两个字符串(全是小写字母)
串长为 1 到 1000000
第一个串长度刚好比第二个的长度大一
输出
每个测试数据:
第一行输出可以删除的位置个数 P
如果P > 0 第二行输出可以删除的位置(小到大,空格隔开,位置从1开始算)
样例输入
3
juuly
july
abc
zz
aa
a
样例输出
2
2 3
0
2
1 2

直接循环比较字符,不会超时,代码注释中写思路

AC代码:

#include <stdio.h>
#include <string.h>
char a[1000003], b[1000003];
int c[1000003];//存可以删的字符下标 
int main() {
	int T, i, j, t;
	scanf("%d", &T);
	while(T--) {
		char x = 0, fag = 0;
		scanf("%s%s", a+1, b+1);
		//字符串从a+1开始放主要是不想在后面存下标时(或输出每个下标时)每次都去+1 
		//个人感觉这样可以降低一定的时间复杂度 
		 
		i = 1;
		int L = strlen(b+1);
		while(a[i] == b[i]) i++;
		j = i+1;
		t = i;
		while(a[j] == b[i] && i <= L) {//因为输入时是a+1,所以这里i<=L 
		  i++;
			j++;	
		}
		if(i > L) fag = 1;
		j = 0;
		if(fag) {//fag为0不执行
//因为fag为0意味着没有可删除的字符让a串变成b串 
			c[j++] = t;
			x = a[t--];
		}
		while(a[t] == x && t > 0) c[j++] = t--;
		//回到不相同的地方往前看有几个连续与该多余字符相同的 
		
		printf("%d\n", j);
		while(j--) printf("%d ", c[j]);
		if(fag == 1) printf("\n");//fag为0不输出换行
		//不过这题有没有都能过 
	}
	return 0;
}


QQ:754912298

欢迎交流

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
孪生素数是指两个素数之间的差值为2的素数对。通过筛选法可以找出给定素数范围内的所有孪生素数的组数。 在引用的代码中,使用了递归筛选法来解决孪生素数问题。该程序首先使用循环将素数的倍数标记为非素数,然后再遍历素数数组,找出相邻素数之间差值为2的素数对,并统计总数。 具体实现过程如下: 1. 定义一个数组a[N,用来标记数字是否为素数,其中N为素数范围的上限。 2. 初始化数组a,将0和1标记为非素数。 3. 输入要查询的孪生素数的个数n。 4. 循环n次,每次读入一个要查询的素数范围num。 5. 使用两层循环,外层循环从2遍历到num/2,内层循环从i的平方开始,将素数的倍数标记为非素数。 6. 再次循环遍历素数数组,找出相邻素数之间差值为2的素数对,并统计总数。 7. 输出总数。 至此,我们可以使用这个筛选法的程序来解决孪生素数问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [python用递归筛选法求N以内的孪生质数(孪生素数)](https://blog.csdn.net/weixin_39734646/article/details/110990629)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [NYOJ-26 孪生素数问题](https://blog.csdn.net/memoryofyck/article/details/52059096)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值