笔记
作者:互联网
【问题描述】
小 N 是一个很萌很萌的爱记笔记的好孩子,他又准备在他的笔记本上记下一些文字 了。小 N 希望将这些文字按顺序记在他的笔记本上:假设笔记本的每一页都不限字数,且 他在记下每个字后都可以选择翻到下一页。小 N 有一个奇怪的习惯,笔记本的每一页中都 不能出现重复的字母。小 N 想知道,他最少记多少页笔记,才能按顺序记下全部文字? 【输入】 第一行包含一个仅由小写字母组成的字符串 S,表示小 N 希望记下的文字。
【输出】 一行一个整数,表示小 N 记笔记的最少页数。
【输入输出样例】
note.in
fsfhztctwzj
note.out
3
【数据范围】
对于 40%的数据:1 ≤ |S| ≤ 10。
对于 70%的数据:1 ≤ |S| ≤ 501。
对于 100%的数据:1 ≤ |S| ≤ 525010。
题解:
【读题】
可以抽象为:给定一个字符串,将此串分成尽量少的部分,并使每一部分都没有重复字母。
【样例解释】
fs//fhztc//twzj
【思路】
对一个字符串,从第一个到最后一个枚举,每当有重复字母,ans++,
并memset一下记录数组
时间复杂度O(n)
期望得分:100
代码:#include<bits/stdc++.h> using namespace std; int ans=1; string a; bool flag[155]; int main() { cin>>a; int len=a.length(); for(int i=0;i<len;i++) { if(flag[a[i]]) { ans++; memset(flag,0,sizeof(flag)); } flag[a[i]]=1; } printf("%d",ans); return 0; } /* fsfhztctwzj */
标签:文字,int,笔记本,笔记,字符串,记下,记笔记 来源: https://www.cnblogs.com/chen-1/p/11778694.html