zoukankan      html  css  js  c++  java
  • 【PAT甲级】1084 Broken Keyboard (20 分)

    题意:

    输入两行字符串,输出第一行有而第二行没有的字符(对大小写不敏感且全部以大写输出)。

    AAAAAccepted code:

     1 #define HAVE_STRUCT_TIMESPEC
     2 #include<bits/stdc++.h>
     3 using namespace std;
     4 string s1,s2;
     5 bool vis[507];
     6 vector<char>ans;
     7 int main(){
     8     ios::sync_with_stdio(false);
     9     cin.tie(NULL);
    10     cout.tie(NULL);
    11     cin>>s1>>s2;
    12     int n=s1.size();
    13     int p=0;
    14     int pos=0;
    15     for(int i=0;i<n;++i){
    16         if(s1[i]==s2[p])
    17             ++p;
    18         else if(!vis[s1[i]-'0']){
    19             if(s1[i]>='a'&&s1[i]<='z')
    20                 ans.push_back(s1[i]-'a'+'A');
    21             else
    22                 ans.push_back(s1[i]);
    23             vis[s1[i]-'0']=1;
    24             if(s1[i]>='a'&&s1[i]<='z')
    25                 vis[s1[i]-'a'+'A'-'0']=1;
    26             else if(s1[i]>='A'&&s1[i]<='Z')
    27                 vis[s1[i]-'A'+'a'-'0']=1;
    28         }
    29         if(p==s2.size()){
    30             pos=i+1;
    31             break;
    32         }
    33     }
    34     for(int i=pos;i<n;++i)
    35         if(!vis[s1[i]-'0']){
    36             ans.push_back(s1[i]);
    37             vis[s1[i]-'0']=1;
    38             if(s1[i]>='a'&&s1[i]<='z')
    39                 vis[s1[i]-'a'+'A'-'0']=1;
    40             else if(s1[i]>='A'&&s1[i]<='Z')
    41                 vis[s1[i]-'A'+'a'-'0']=1;
    42         }
    43     for(auto it:ans)
    44         cout<<it;
    45     return 0;
    46 }
    保持热爱 不懈努力 不试试看怎么知道会失败呢(划掉) 世上无难事 只要肯放弃(划掉)
  • 相关阅读:
    Java习惯用法总结
    为什么做java的web开发我们会使用struts2,springMVC和spring这样的框架?
    Java 20年:转角遇到Go
    史上最全最强SpringMVC详细示例实战教程
    即将改变软件开发的5个Java9新特性
    <一>c++的编程思路
    人生不可破的28个天规
    定时任务
    redis
    mycat分库分表
  • 原文地址:https://www.cnblogs.com/ldudxy/p/11877696.html
Copyright © 2011-2022 走看看