1. 程式人生 > >PAT 1029. 舊鍵盤

PAT 1029. 舊鍵盤

scan urn int 輸出格式 const markdown algorithm logs 一段

PAT 1029. 舊鍵盤

舊鍵盤上壞了幾個鍵,於是在敲一段文字的時候,對應的字符就不會出現。現在給出應該輸入的一段文字、以及實際被輸入的文字,請你列出肯定壞掉的那些鍵。

輸入格式:

輸入在2行中分別給出應該輸入的文字、以及實際被輸入的文字。每段文字是不超過80個字符的串,由字母A-Z(包括大、小寫)、數字0-9、以及下劃線“_”(代表空格)組成。題目保證2個字符串均非空。

輸出格式:

按照發現順序,在一行中輸出壞掉的鍵。其中英文字母只輸出大寫,每個壞鍵只輸出一次。題目保證至少有1個壞鍵。

輸入樣例:

7_This_is_a_test
_hs_s_a_es

輸出樣例:

7TI

分析

用了C語言中的標準函數庫中的strchr()函數可以實現查找字符串中的某個字符。

頭文件: #include <string.h>

函數原型:char *strchr(const char *s, int c);

函數說明:從左向右,在字符串s中查找字符c首次出現的位置,如果找到返回c在s中的位置(指針),否則返回NULL

代碼如下.

#include<iostream>
#include<algorithm>
#include<cctype> 
#include<string.h>
using namespace std;
int main(){
    char input1[81],input2[81],broken[81]={0};
    scanf("%s%s",&input1,&input2);
    int t1=0,t2=0,t=0;
    while(input2[t2]!='\0'){
    if(input1[t1]!=input2[t2]){
    if(isalpha(input1[t1]))
    input1[t1]=toupper(input1[t1]); 
    if(!strchr(broken,input1[t1]))
    broken[t++]=input1[t1];
    t1++;   
    }   
    else{
    t1++; t2++;
    }
    }
    while(input1[t1]!='\0'){
    if(isalpha(input1[t1]))
    input1[t1]=toupper(input1[t1]);
    if(!strchr(broken,input1[t1]))
    broken[t++]=input1[t1];
    t1++;       
    }
    printf("%s",broken);
    return 0;
}

PAT 1029. 舊鍵盤