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

从第一个位置开始比较,直到找到不相等的位置,记录不相等的位置,然后错位比较,如果又找到一处不相等的位置,即不相等的位置个数超过1个,跳出循环,输出0;然后用第一个字符串的最后一个元素一次与前面元素比较,如果相等,删除点个数加1,否则跳出循环。


#include<stdio.h>
#include<string.h>
char s1[1000001],s2[1000001];
int main()
{int n,i,j,p,cnt,len1,len2,sum;scanf("%d",&n);while(n--){scanf("%s",s1);scanf("%s",s2);len1=strlen(s1);len2=len1-1;p=i=j=cnt=0;while(i<len1&&j<len2){if(s1[i]!=s2[j]){p=i; //记录第一个不相等的位置cnt++; //不等位置数量加1if(cnt>1) break;i++; //错位比较}else{i++;j++;}}if(cnt>1)//不相等数量大于1,都不能删除printf("0\n");sum=0; //记录删除点的个数if(cnt==0)  /*abcd abc*/{for(i=len1-2;i>=0;i--) //从倒数第二个元素开始,每次都和最后一个元素比较{if(s1[i]==s1[len1-1])sum++; elsebreak;}printf("%d\n",sum+1);for(j=i+2;j<=len1;j++) //i记录与最后一个元素不等元素的位置,从i后一个开始输出,下标加1,最后一个元素位置为len1printf("%d ",j);printf("\n");}else if(cnt==1){for(i=p-1;i>=0;i--) //从第一个不等位置往前与a[p]比较{if(s1[i]==s1[p])sum++;else break;}printf("%d\n",sum+1);for(j=i+2;j<=p+1;j++)printf("%d ",j);printf("\n");}}return 0;
}

NYOJ 359 Delete it 字符串处理相关推荐

  1. System.Delete - 从字符串中删除

    procedure Delete(var S: String; {源字符串; 因为是 var 参数, 不可能是个常量}Index: Integer; {起始位置; 第一个字符的位置是 1, 起始位置不 ...

  2. NYOJ 37 回文字符串

    回文字符串 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描述 所谓回文字符串,就是一个字符串,从左到右读和从右到左读是完全一样的,比如"aba".当然, ...

  3. Delphi动态数组中删除元素的重要函数Delete

    System.Delete从字符串中删除一个子串,或者从动态数组中删除元素,并返回修改后的数组. 在Delphi代码中,Delete从字符串或数组S中删除一个由Count字符组成的子串,从S[Inde ...

  4. Ruby 字符串操作(和 Python3 字符串操作进行对比)

    本来是想写到 Ruby 学习笔记一块的,但是字符串操作这块的内容确实太多了,所以单独提取出来了. Ruby 和 Python 两种语言都支持单引号和双引号的字符串.话不多说,直接上菜(为了对比明显,R ...

  5. Python3之字符串

    Python3之字符串 基础内容 创建:为变量分配一个值即可 单行:'xxx' 或 "xxx" 多行:""" 或 ''' 访问:使用方括号来截取字符串 ...

  6. [Swust OJ 404]--最小代价树(动态规划)

    题目链接:http://acm.swust.edu.cn/problem/code/745255/ Time limit(ms): 1000 Memory limit(kb): 65535 Descr ...

  7. Python3快速入门(三)——Python3标准数据类型

    Python3快速入门(三)--Python3标准数据类型 一.Python3标准数据类型 Python3 中有六种标准数据类型: A.Number(数字) B.String(字符串) C.List( ...

  8. android crash 定位,Android NDK Crash 定位分析

    当拿到应用的crash日志,如果是在java层出现了异常,相信大家都知道通过堆栈信息查找到奔溃的代码,但是如果是在native层出现了问题,面对下面的一堆内存地址,有些小伙伴可能就会觉得无从下手了: ...

  9. 学习java的一些笔记(7)

    1)StringBuilder 和String不同,该类的实例封装了一个可变字符序列. 当我们需要对一个字符串进行频繁修改的时候,应首先选取该类完成 常用构造方法: StrinfBuilder(): ...

最新文章

  1. 自动化运维工具之puppet简单实用
  2. [转] Spring Boot特性
  3. 【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验二十:SDRAM模块③ — 页读写 α...
  4. C#知识点总结系列:C# 数据结构
  5. python label标签的作用_label标签的作用是什么?
  6. MySQL数据库如何做好优化
  7. LeetCode 5366. 检查网格中是否存在有效路径
  8. mongodb java 地理位置_MongoDB的地理位置索引
  9. 编译器各个步骤的介绍
  10. 深度学习CNN, R-CNN
  11. 基于排队论模型的收银台服务系统的分析及可视化设计
  12. 在Ubuntu上安装D-link DWA-131驱动
  13. Windows7 设置窗口颜色 护眼
  14. Unity iOS使用ASTC格式纹理实践
  15. 用python帮别人写了个文字识别程序
  16. 为什么JAVA对象需要实现序列化?
  17. dell 730xd硬raid配置
  18. 作为SLAM中最常用的闭环检测方法,视觉词袋模型技术详解来了
  19. CANopen协议本质
  20. STATA如何进行斯皮尔曼检验

热门文章

  1. Python爬虫学习笔记(三)——正则表达式
  2. vmware安装mac
  3. Swift - 本地消息的推送通知(附样例)
  4. ora-12514报错解决方法
  5. 网络测试及故障诊断方法及工具
  6. neural network ppt for support vector machine
  7. try not do unnecessary subscriptions
  8. 唐人街探案3观后感:大四学生的看法
  9. 利物浦大学的office里面没有powerBI
  10. linux下安装navicat并生成桌面图标