题目描述

小杨同学有一串字符,里面可能有:

  • 大写字母,比如 A、B、C
  • 小写字母,比如 a、b、c
  • 数字,比如 0、1、2

现在小杨同学想把这串字符变一变,规则如下:

  1. 如果是大写字母,就变成对应的小写字母;
  2. 如果是小写字母,就变成对应的大写字母;
  3. 如果是数字,就变成 * 。

请你按照这个规则,帮小杨把整串字符转换好。

输入格式

输入一共有 2 行。

第一行:一个整数,表示这串字符一共有多少个字符。

第二行:一串连续的字符,中间没有空格。

输出格式

输出转换后的字符。

注意:输出时字符之间不要加空格。

输入输出样例

输入 #1复制

5
aBc98

输出 #1复制

AbC**

说明/提示

原来的字符是:

aBc98

从左到右一个一个看:

  1. a 是小写字母,所以变成 A;
  2. B 是大写字母,所以变成 b;
  3. c 是小写字母,所以变成 C;
  4. 9 是数字,所以变成 *
  5. 8 是数字,所以变成 *

所以最后输出:

AbC**

数据范围

字符个数不会超过 1000 个。

每个字符只会是大写字母、小写字母或数字。

AC代码

#include<bits/stdc++.h>
using namespace std;
char a[1005],b[1005];
int main(){
	int n;
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	for(int i=1;i<=n;i++){
		if(a[i]>='a'&&a[i]<='z'&&b[i]==0){
			a[i]-=32;
			b[i]=1;
		}
		if(a[i]>='A'&&a[i]<='Z'&&b[i]==0){
			a[i]+=32;
			b[i]=1;
		}
		if(a[i]>='0'&&a[i]<='9'){
			a[i]='*';
		}
	}
	for(int i=1;i<=n;i++){
		cout<<a[i];
	}
	return 0;
}

注释版

#include<bits/stdc++.h>
using namespace std;
char a[1005],b[1005];
int main(){
	int n;
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	for(int i=1;i<=n;i++){
		if(a[i]>='a'&&a[i]<='z'&&b[i]==0){//b[i]的作用:防止进行二次转换
			a[i]-=32;//小写转大写
			b[i]=1;//代表已经转换过了
		}
		if(a[i]>='A'&&a[i]<='Z'&&b[i]==0){
			a[i]+=32;//大写转小写
			b[i]=1;
		}
		if(a[i]>='0'&&a[i]<='9'){
			a[i]='*';
		}
	}
	for(int i=1;i<=n;i++){
		cout<<a[i];
	}
	return 0;
}

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐