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 }
  • 相关阅读:
    嵌入式系统移植三部曲 王晓峰
    嵌入式系统移植三部曲 李炎朔
    ser and client.c 王晓峰
    李炎朔 编程分析
    嵌入式系统移植三步曲 赵晓晓
    嵌入式系统移植三步曲 孟明明
    现在 搞技术确实越来越不值钱了
    Linux C局域网通信程序 刘志卿
    Firefox全面兼容中国银联“在线支付”
    Linux常识型试题
  • 原文地址:https://www.cnblogs.com/zhang716921/p/9687218.html
Copyright © 2011-2022 走看看