zoukankan      html  css  js  c++  java
  • 字符串的查找删除

    题目描述

    给定一个短字符串(不含空格),再给定若干字符串,在这些字符串中删除所含有的短字符串。

    输入

    输入只有1组数据。
    输入一个短字符串(不含空格),再输入若干字符串直到文件结束为止。

    输出

    删除输入的短字符串(不区分大小写)并去掉空格,输出。

    样例输入

    in
    #include 
    int main()
    {
    
    printf(" Hi ");
    }

    样例输出

    #clude
    tma()
    {
    
    prtf("Hi");
    }

    提示

    注:将字符串中的In、IN、iN、in删除。

     1 #include <iostream>
     2 #include <vector>
     3 #include <string>
     4 using namespace std;
     5 
     6 int main(){
     7     string del_str;
     8     getline(cin, del_str);
     9     unsigned long del_len = del_str.size();
    10     for(size_t i = 0; i < del_len; i++) if(isupper(del_str[i])) del_str[i] += 32;
    11     string kong(del_len,' ');
    12 
    13     string ans_str;
    14     vector<int> upper_idxs;
    15     vector<int>::iterator it;
    16 
    17     while(getline(cin, ans_str)){
    18         unsigned long t = ans_str.find(' ', 0);
    19         while(t != string::npos){
    20             ans_str.erase(t, 1);
    21             t = ans_str.find(' ', t);
    22         }
    23 
    24         unsigned long ans_len = ans_str.size();
    25         for(int i = 0; i < ans_len; i++){
    26             if(isupper(ans_str[i])){
    27                 ans_str[i] += 32;
    28                 upper_idxs.push_back(i);
    29             }
    30         }
    31 
    32         t = ans_str.find(del_str, 0);
    33         while(t != string::npos){
    34             ans_str.replace(t, del_len, kong);
    35             for(unsigned long j = t; j < t + del_len; j++){
    36                 for(it = upper_idxs.begin(); it != upper_idxs.end(); it++){
    37                     if(*it == j) upper_idxs.erase(it);
    38                 }
    39             }
    40             t = ans_str.find(del_str, t);
    41         }
    42         for(it = upper_idxs.begin(); it != upper_idxs.end(); it++) ans_str[*it] -= 32;
    43 
    44         t = ans_str.find(' ', 0);
    45         while(t != string::npos){
    46             ans_str.erase(t, 1);
    47             t = ans_str.find(' ', t);
    48         }
    49         cout << ans_str << endl;
    50         upper_idxs.clear();
    51     }
    52     return 0;
    53 }
  • 相关阅读:
    mysql日期加减
    cron 配置计划任务的书写格式(quartz 时间配置)
    空值排序问题
    update 表名 set 字段=值,数据更新
    insert into 数据插入
    SQL里面的char类型
    SQL使用代码创建数据完整性,约束
    SQL制表
    sql创建数据库
    验证码
  • 原文地址:https://www.cnblogs.com/zhang716921/p/9687218.html
Copyright © 2011-2022 走看看