zoukankan      html  css  js  c++  java
  • 九度oj 题目1177:查找

    题目描述:

        读入一组字符串(待操作的),再读入一个int n记录记下来有几条命令,总共有2中命令:1、翻转  从下标为i的字符开始到i+len-1之间的字符串倒序;2、替换  命中如果第一位为1,用命令的第四位开始到最后的字符串替换原读入的字符串下标 i 到 i+len-1的字符串。每次执行一条命令后新的字符串代替旧的字符串(即下一条命令在作用在得到的新字符串上)。

        命令格式:第一位0代表翻转,1代表替换;第二位代表待操作的字符串的起始下标int i;第三位表示需要操作的字符串长度int len。

    输入:

    输入有多组数据。
    每组输入一个字符串(不大于100)然后输入n,再输入n条指令(指令一定有效)。

    输出:

    根据指令对字符串操作后输出结果。

    样例输入:
    bac
    2
    003
    112as
    样例输出:
    cab
    cas

    #include <cstdio>
    #include <cstring>
    
    int n;
    char str[102];
    char instrut[102];
    
    void reverse(int from, int len) {
        for(int i = from; len > 1; i++) {
            char temp = str[i];
            str[i] = str[i+len-1];
            str[i+len-1] = temp;
            len = len -2;
        }
    
    }
    
    void replace(int from, int len) {
        for(int i = from,j = 3; i <= from+len-1; i++,j++) {
            str[i] = instrut[j];
        }
    
    }
    int main(int argc, char const *argv[])
    {
        while(scanf("%s",str) != EOF) {
            scanf("%d",&n);
            while(n--) {
                scanf("%s",instrut);
                if(instrut[0] == '0') {
                    int from = instrut[1] - '0';
                    int len = instrut[2] - '0';
                    reverse(from,len);
                    puts(str);
                }
                else {
                    int from = instrut[1] - '0';
                    int len = instrut[2] - '0';
                    replace(from, len);
                    puts(str);
                }
            }
        }    
        return 0;
    }
  • 相关阅读:
    BASIC-2 01字串
    BASIC-1 闰年判断
    BASIC-11 十六进制转十进制
    IO流之File类
    集合-下
    集合-上
    java常用类-下
    关于String的一些基础小题目
    java常用类-上
    异常
  • 原文地址:https://www.cnblogs.com/jasonJie/p/5866546.html
Copyright © 2011-2022 走看看