其他分享
首页 > 其他分享> > 笔记

笔记

作者:互联网

【问题描述】 小 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