• Delete it


    Problem A: Delete it

    Time Limit: 2 Sec   Memory Limit: 64 MB
    Submit: 99   Solved: 25

    Description

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

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

     

    Input

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

     

    每个测试

    输入两行,两个字符串(全是小写字母)

    串长为 到 1000000

    第一个串长度刚好比第二个的长度大一

     

    Output

    每个测试数据:

    第一行输出可以删除的位置个数 P

    如果P > 0 第二行输出可以删除的位置(小到大,空格隔开,位置从1开始算)

     

    Sample Input

    3
    juuly
    july
    abc
    zz
    aa
    a

    Sample Output

    2
    2 3
    0
    2
    1 2

    思路:题目意思应该很简单就懂了,关键看用什么方法,题目所给数据不大,可以直接做。

    可以由两个指针,一个从前往后扫,一个从后往前扫,比较两个字符串的异同,当比较到不同时,结束扫描。
    那么结果就出来了。
    代码:
    #include<iostream>
    #include<stdio.h>
    #include<cstring>
    using namespace std;
    #define MAX 1000000
    char a[MAX+10],b[MAX+10];
    int main()
    {
        //freopen("data.in", "r", stdin);
        //freopen("data.out","w",stdout);
        int n,i,len,j;
        scanf("%d",&n);
        while(n--)
        {
            scanf("%s%s",&a,&b);
            len=strlen(b);
            i=0;j=len+1;
            while(i<len&&a[i]==b[i])
                i++;
            while(j-1>0&&a[j-1]==b[j-2])
                j--;
            //printf("i=%d  j=%d
    ",i,j);
            if(i-j+2<=0)
                printf("0
    ");
            else
            {
                printf("%d
    ",i-j+2);
                for(int m=j-1;m<=i;m++)
                {
                    if(m==j-1)
                        printf("%d",m+1);
                    else
                        printf(" %d",m+1);
                }
                printf("
    ");
            }
        }
        return 0;
    }
    


  • 相关阅读:
    API WAVE 专栏
    PCM数据格式(转)
    Windows 下音频数据采集和播放(转)
    java实现FFT变换(转)
    用74HC165读8个按键状态(转)
    机器人局部避障的动态窗口法(dynamic window approach) (转)
    TLD视觉跟踪算法(转)
    FFT算法在单片机中的使用&&LCD12864驱动
    Oracle442个应用场景-----------Oracle数据库物理结构
    Swift具体解释之三----------函数(你想知道的都在这里)
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3194328.html
Copyright © 2020-2023  润新知