东方博宜OJ — 2、字符串【题解】1478~1402

该博客主要介绍了多个关于字符串操作的问题,包括找字典码最小的字符串、字符串对比、出现次数最多的小写字母、判断是否构成回文、字符串中的空格移位、删除中间的*、字符串的反码等。通过实例展示了各种字符串处理的方法和解题思路。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1480. 找字典码最小的字符串

问题描述

编写程序,针对输入的 𝑁N 个不同的字符串,输出其中字典码最小的字符串。

输入

输入第一行给出正整数 𝑁N ;

随后 𝑁N 行,每行给出一个长度小于 8080 的非空字符串,其中不会出现换行符,空格,制表符。

输出

输出字典码最小的字符串。

样例

输入

复制

5
Li
Wang
Zha
Jin
Xian
输出

复制

Jin


#include <bits/stdc++.h>
using namespace std;

int main(){
	//s:代表字典码最小的字符串,x:代表运算结果 
	string mi,x;
	int n,i;
	cin>>n;
	//先读入一个字符串,作为被比较的对象
	//假设它是字典码最小的字符串 
	cin>>mi; 
	
	//再次读入n-1个字符串,并逐个和mi比较(打擂台)
	for(i = 2;i <= n;i++){
		cin>>x;
		if(x < mi){
			mi = x;
		}
	} 
	
	cout<<mi;
}

1475. 字符串对比

问题描述

给定两个仅由大写字母或小写字母组成的字符串(长度介于 11 到 100100 之间),它们之间的关系是以下 44 种情况之一:

11:两个字符串长度不等。比如 Beijing 和 Hebei

22:两个字符串不仅长度相等,而且相应位置上的字符完全一致(区分大小写),比如 Beijing 和 Beijing

33:两个字符串长度相等,相应位置上的字符仅在不区分大小写的前提下才能达到完全一致(也就是说,它并不满足情况22 )。比如 beijing 和 BEIjing

44:两个字符串长度相等,但是即使是不区分大小写也不能使这两个字符串一致。比如 Beijing 和 Nanjing

编程判断输入的两个字符串之间的关系属于这四类中的哪一类,给出所属的类的编号。

输入

包括两行,每行都是一个字符串。

输出

仅有一个数字,表明这两个字符串的关系编号。

样例

输入

复制

BEIjing 
beiJing 
输出

复制

3

说明

【来源】蓝桥杯基础训练

#1、

#include<iostream>
#include<algorithm>
using namespace std;
int main(){
	string a,b;
	cin>>a>>b;
	int flag=2;
	int n=a.length();
	if (a.length()!=b.length()) cout<<1<<endl;
	else{
		for (int i=0;i<n;i++){
			if (a[i]!=b[i]&& tolower(a[i])!=tolower(b[i])){
				flag=4;
				break;
			}
			else if (a[i]!=b[i] && tolower(a[i])==tolower(b[i])) flag=3;
		}
		cout<<flag;
	}
	return 0;
}




#2、 

1.情况1和情况2很好判断

2.如果不符合情况1、情况2,将两个字符串都转小写,如果相等,就是情况3,否则是情况4



#include <bits/stdc++.h>
using namespace std;

string s1,s2;
int main() {
	cin>>s1>>s2;
	//情况1
	if(s1.size() != s2.size()){
		cout<<1;
	} else if(s1 == s2){
		cout<<2;
	} else{
		//将两个字符串中的大写都改小写,如果是一样的
		//说明是情况3
		for(int i = 0;i < s1.size();i++){
			if(s1[i] >= 'A' && s1[i] <= 'Z'){
				s1[i] = s1[i] + 32;//32 -> 'a' - 'A'
			}
			
			if(s2[i] >= 'A' && s2[i] <= 'Z'){
				s2[i] = s2[i] + 32;//32 -> 'a' - 'A'
			}
		}
		
		if(s1 == s2){
			cout<<3;
		}else{
			cout<<4;
		}
	}
	return 0;
}

 #3、

定义函数,将字符串转小写:

#include<bits/stdc++.h>
using namespace std;

string s1,s2;

//将字符串转小写
string tolower(string s) {
	for(int i = 0;i < s.size();i++){
		if(s[i] >= 'A' && s[i] <= 'Z'){
			s[i] = s[i] + 32;
		}
	}
	
	return s;
}

int main() {
	cin>>s1>>s2;
	//情况1:长度不等
	if(s1.size() != s2.size()) {
		cout<<1;
	} else if(s1 == s2) {
		cout<<2;//情况2:字符串一样
	} else if(tolower(s1) == tolower(s2)) {
		cout<<3;
	} else {
		cout<<4;
	}
	r
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值