字符串翻转和替换

描述:大家平时都会用到字符串,现在有几种字符串操作,需要你用这几种操作处理下字符串。

输入:多组数据,以EOF结束。

第一行一个字符串,字符串长度大于0,并且小于等于200。

第二行一个数字t,(0<t<=200)。

下面t行,每行表示一种操作。

共有两种操作,每行数据的第一个数表示操作的种类:

翻转操作:第一个是一个数字0,然后两个数字i和len,翻转从下标i长度为len的子串。

替换操作:第一个是一个数字1,然后两个数字i和len,接着一个长度为len的字符串str,用str替换从下标i长度为len的子串。

字符串操作后会更新,旧的字符串被舍弃。

两种解决方式,一种是使用replace函数,但这种方式会超时啊。。。另一种。。。emmm,就用原始方式就很好。。。

#include <iostream>
#include<cstdio>
#include<string.h>
#define N 200
using namespace std;

int main()
{
    string str;
    cin>>str;
    int t;
    cin>>t;
    while(t--){
        string testr=str;
        int op,i,len;
        scanf("%d %d %d",&op,&i,&len);
    if(op==0){
        string temp;
        for(int j=i+len-1;j>=i;j--){
            temp+=str[j];
        }
        testr.replace(i,len,temp);
    }
    if(op==1){
        string temp;
        cin>>temp;
        testr.replace(i,len,temp);
    }
    cout<< testr<<endl;
    }
    return 0;
}
#include <iostream>
#include<string.h>
using namespace std;

int main()
{
    string str;
    cin >> str;
    int t;
    cin >> t;
    while(t--){
        int op,i,len;
        scanf("%d %d %d",&op,&i,&len);
        string testr=str;
        if(op==0){
            for(int j=i+len-1,k=i;j>=i&&k<i+len;j--,k++){
                    testr[k]=str[j];
            }
        }
        else if(op==1){
            string temp;
            cin >> temp;
            for(int j=i,k=0;j<i+len &&k<len;j++,k++){
                    testr[j]=temp[k];
            }
        }
        cout<<testr<<endl;
    }
    return 0;
}

原文地址:https://www.cnblogs.com/xym4869/p/8645003.html

时间: 2024-10-16 15:59:54

字符串翻转和替换的相关文章

字符串翻转,单词内不翻转

字符串翻转,单词内不翻转.如I am from Chongqing->Chongqing from am I 1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<string.h> 4 5 void reverse(char *str, int beg, int end); 6 void reverseSentece(char *str); 7 int main() 8 { 9 char str[128]; 10

在Vi里面实现字符串的批量替换

在Vi里面实现字符串的批量替换. a. 文件内全部替换: %s#abc#def#g(用def替换文件中所有的abc) 例如把一个文本文件里面的"linuxidc.com"全部替换成"linuxidc.net": :%s#linuxidc.com#xwen.net#g (如文件内有#,可用/替换,比如:%s/linuxidc.com/xwen.net/g) b. 文件内局部替换: 把10行到50行内的"abc"全部替换成"def"

字符串翻转

字符串翻转 对于一个给定的字符串,我们需要在线性(也就是O(n))的时间里对它做一些变形.首先这个字符串中包含着一些空格,就像"Hello World"一样,然后我们要做的是把着个字符串中由空格隔开的单词反序,同时反转每个字符的大小写.比如"Hello World"变形后就变成了"wORLD hELLO". 输入描述: 给定一个字符串s以及它的长度n(1≤n≤500) 输出描述: 请返回变形后的字符串.题目保证给定的字符串均由大小写字母和空格构成

.net mvc RazorEngine 字符串razor参数替换

在.net中有一个比较好的字符串参数替换的方案RazorEngine推荐大家看看原网站,然后做个小联系然后你就懂啦 首先呢得下载一个吧, vs中tools-> Library Paging Manager->Manager Nuget 在然后呢Install-Package RazorEngine 等待搜索结束吧,然后下载下来两个dll RazorEngine.dll  没说的一定要引用到工程里面的 System.Web.Razor.dll 这个dll工程里面是引用了的  多以会提示替换,别犹

No.32 将字符串进行内容替换

将字符串进行内容替换.注意:修改后变成新字符串,并不是将原字符串直接修改. String replace(oldChar,newChar); String replace(oldstring,newstring);

JAVA用标准库自己写一个字符串翻转方法,翻转字符串中字母非单词

例如输入:I love programming 输出:I evol gnimmargorp 算法思路就是:根据空格提取每一个单词,存放在一个buffer里进行翻转处理,再添加到新的字符串.最后新的字符串就完成整个方法过程. public class ReserveString { public String reserve(String sentence){ String backS = new String(); StringBuffer temp = new StringBuffer();

使用正则表达式,字符串的批量替换

1.1 使用正则表达式,字符串的批量替换. 今天遇到一个问题,需要把表里的附件名称做换行处理,直接替换换行符即可,代码如下: data.FILE_NAMES = data.FILE_NAMES.replace(/:/g, '\r\n'); 这里是把“:”替换成了“\r\n”,/g是指全局的意思,如果这么写,则只会替换第一个冒号 data.FILE_NAMES=data.FILE_NAMES.replace(":","\r\n");

c/c++面试题(4)字符串翻转/打印任意进制格式/类型转换

1.字符串的翻转,这里一般是字符数组.不包括字符串字面值. char* reversal_str(char* str,size_t size); 翻转之后的字符串是原来的字符串的翻转. #include <stdio.h> #include <string.h> char* reversal(char* str,size_t len) { if(str != NULL) { char* start = str; char* end = str + len - 1; char ch;

CareerCup之1.2C风格字符串翻转

[题目] 原文: Write code to reverse a C-Style String. (C-String means that "abcd" is represented as five characters, including the null character.) 译文: 写代码翻转一个C风格的字符串.(C风格的意思是"abcd"需要用5个字符来表示,包含末尾的 结束字符) [分析] 这是一道经典的面试题目,虽然看似简单,但仍然有陷阱.唯一的陷阱