传送门 题意:给你一串字符串,让你求出最长的小写字母组成的字符串,并且字符串中的小写字母各不相同,且不能有大写字母。 思路:直接模拟即可,可以用map维护每次
传送门 题意:给你一串字符串,让你求出最长的小写字母组成的字符串,并且字符串中的小写字母各不相同,且不能有大写字母。
思路:直接模拟即可,可以用map维护每次大写字母前小写字符串的长度,然后注意清空,插入。
map()的基本操作函数
begin() 返回指向map头部的迭代器
clear() 删除所有元素
count() 返回指定元素出现的次数
empty() 如果map为空则返回true
end() 返回指向map末尾的迭代器
equal_range() 返回特殊条目的迭代器对
erase() 删除一个元素
find() 查找一个元素
get_allocator() 返回map的配置器
insert() 插入元素
key_comp() 返回比较元素key的函数
lower_bound() 返回键值>=给定元素的第一个位置
max_size() 返回可以容纳的最大元素个数
rbegin() 返回一个指向map尾部的逆向迭代器
rend() 返回一个指向map头部的逆向迭代器
size() 返回map中元素的个数
swap() 交换两个map
upper_bound() 返回键值>给定元素的第一个位置
value_comp() 返回比较元素value的函数/**
* From:
* Qingdao Agricultural University
* Created by XiangwangAcmer
* Date : 2019-10-23-17.38.22
* Talk is cheap.Show me your code.
*/
using namespace std;
const ll maxn = 1e6 + 5;
const ll minn = 1e9 + 5;
const ll mod = 1000000007;
const int INF = 0x3f3f3f3f;
const long long LIMIT = 4294967295LL;
vector<int>v[maxn];
int dp[maxn];
vector<int>G[maxn];
bool row[maxn], col[maxn];
bool flag = 0;
queue<int>q;
char s[maxn];
map<char, int>mp;
int vis[maxn];
int book[maxn];
int main()
{
ios::sync_with_stdio(false);
int n;
cin >> n;
int maxnn=0;
for(int i = 1; i <= n; i++)
{
cin >> s[i];
if(s[i] >= 'A' && s[i] <= 'Z')
book[i] = 1;
else vis[s[i]] = 1;
}
for(int i = 1; i <= n; i++)
{
if(book[i])
{
mp.clear();
continue;
}
if(vis[s[i]] && mp.count(s[i]) == 1)
continue;
else
{
mp[s[i]]=1;
int t = mp.size();
maxnn=max(maxnn,t);
}
}
cout<<maxnn<<endl;
return 0;
}
Java中字符串拆分成字符数组
String String2;Map map = new HashMap();
Scanner cin = new Scanner(System.in);
int n = cin.nextInt();
String2 = cin.next();
int maxnn=0 ;
char []String1 = String2.toCharArray();package Java1022;
import java.util.*;
public class Main {
public static void main(String[] args) {
final int maxn = (int) (1e6 + 5);
int[] x = new int[maxn << 1];
int[] y = new int[maxn << 1];
int[] vis = new int[maxn];
int[] book = new int[maxn];
String String2;
Map map = new HashMap();
Scanner cin = new Scanner(System.in);
int n = cin.nextInt();
String2 = cin.next();
int maxnn=0 ;
char []String1 = String2.toCharArray();
for (int i = 0; i < n; i++) {
if (String1[i] >= 'A' && String1[i] <= 'Z')
vis[i] = 1;
else
book[String1[i]] = 1;
}
int cnt=0;
for (int i = 0; i < n; i++) {
if (vis[i]==1) {
map.clear();
}
else {
if(map.containsKey(String1[i]))
continue;
else {
map.put(String1[i], 1);
int t =map.size();
maxnn = Math.max(maxnn, t);
}
}
}
System.out.println(maxnn);
}
}