NYOJ 359 Delete it 字符串处理
Delete it
- 描述
-
克林在打一行字母时总是会打多一个字符,比如想打”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 字符串处理相关推荐
- System.Delete - 从字符串中删除
procedure Delete(var S: String; {源字符串; 因为是 var 参数, 不可能是个常量}Index: Integer; {起始位置; 第一个字符的位置是 1, 起始位置不 ...
- NYOJ 37 回文字符串
回文字符串 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 所谓回文字符串,就是一个字符串,从左到右读和从右到左读是完全一样的,比如"aba".当然, ...
- Delphi动态数组中删除元素的重要函数Delete
System.Delete从字符串中删除一个子串,或者从动态数组中删除元素,并返回修改后的数组. 在Delphi代码中,Delete从字符串或数组S中删除一个由Count字符组成的子串,从S[Inde ...
- Ruby 字符串操作(和 Python3 字符串操作进行对比)
本来是想写到 Ruby 学习笔记一块的,但是字符串操作这块的内容确实太多了,所以单独提取出来了. Ruby 和 Python 两种语言都支持单引号和双引号的字符串.话不多说,直接上菜(为了对比明显,R ...
- Python3之字符串
Python3之字符串 基础内容 创建:为变量分配一个值即可 单行:'xxx' 或 "xxx" 多行:""" 或 ''' 访问:使用方括号来截取字符串 ...
- [Swust OJ 404]--最小代价树(动态规划)
题目链接:http://acm.swust.edu.cn/problem/code/745255/ Time limit(ms): 1000 Memory limit(kb): 65535 Descr ...
- Python3快速入门(三)——Python3标准数据类型
Python3快速入门(三)--Python3标准数据类型 一.Python3标准数据类型 Python3 中有六种标准数据类型: A.Number(数字) B.String(字符串) C.List( ...
- android crash 定位,Android NDK Crash 定位分析
当拿到应用的crash日志,如果是在java层出现了异常,相信大家都知道通过堆栈信息查找到奔溃的代码,但是如果是在native层出现了问题,面对下面的一堆内存地址,有些小伙伴可能就会觉得无从下手了: ...
- 学习java的一些笔记(7)
1)StringBuilder 和String不同,该类的实例封装了一个可变字符序列. 当我们需要对一个字符串进行频繁修改的时候,应首先选取该类完成 常用构造方法: StrinfBuilder(): ...
最新文章
- 自动化运维工具之puppet简单实用
- [转] Spring Boot特性
- 【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验二十:SDRAM模块③ — 页读写 α...
- C#知识点总结系列:C# 数据结构
- python label标签的作用_label标签的作用是什么?
- MySQL数据库如何做好优化
- LeetCode 5366. 检查网格中是否存在有效路径
- mongodb java 地理位置_MongoDB的地理位置索引
- 编译器各个步骤的介绍
- 深度学习CNN, R-CNN
- 基于排队论模型的收银台服务系统的分析及可视化设计
- 在Ubuntu上安装D-link DWA-131驱动
- Windows7 设置窗口颜色 护眼
- Unity iOS使用ASTC格式纹理实践
- 用python帮别人写了个文字识别程序
- 为什么JAVA对象需要实现序列化?
- dell 730xd硬raid配置
- 作为SLAM中最常用的闭环检测方法,视觉词袋模型技术详解来了
- CANopen协议本质
- STATA如何进行斯皮尔曼检验