紧急措施

GitHub跳转原题关系图返回列表

筛选邮箱相同的账号,并用 swapcase 输出修改后的密码。

OJ: noi_openjudge

题目 ID: ch0107-22

难度:入门

标签:字符串模拟筛选python

日期: 2026-07-30 23:01

题意

从账号列表中找出指定邮箱的账号,输出用户名和大小写互换后的密码;没有账号则输出 empty

思路

逐条比较邮箱。匹配时调用 password.swapcase() 并保存结果,循环后按换行连接;结果列表为空时输出 empty

代码

Python代码

python
email = input().strip()
account_count = int(input())
accounts = []

for _ in range(account_count):
    username, password, account_email = input().split()
    if account_email == email:
        accounts.append(f"{username} {password.swapcase()}")

print("\n".join(accounts) if accounts else "empty")

C++代码

cpp
#include <cstdio>
#include <cstring>


char email[500];

int n;
char str1[500];
char str2[500];
char str3[500];

int main(){
    scanf("%s",email);
    scanf("%d",&n);
    int i,j;
    int cnt=0;
    for (i=1;i<=n;i++){
        scanf("%s",str1);
        scanf("%s",str2);
        scanf("%s",str3);


        if( strcmp(str3,email) == 0){
            cnt++;
            printf("%s ",str1);
            int len = strlen(str2);
            for (j=0;j< len;j++){
                char c  = str2[j];
                if( c >='a' && c <='z'){
                    printf("%c",c+'A'-'a');
                }
                else if(  c >='A' && c <='Z')
                    printf("%c",c+'a'-'A');
                else
                    printf("%c",c);
            }
            printf("\n");
        }
    }
    if(!cnt){
        printf("empty");
    }
    return 0;
}

复杂度

设所有账号字段长度总和为 nn,时间复杂度为 O(n)O(n),输出空间为 O(n)O(n)

总结

筛选记录时先收集,再统一决定空结果与多行输出格式。