#P1533. 第2题-塔子哥的字符串(枚举)

题目描述
塔子哥有一个字符串 s
现在,他想让你求一下这个串中首尾字符相同的子串数目。

输入描述
一行,一个只包括小写字母的字符串 s(1|s|105)

输出描述
一个整数,字符串中首尾字符相同的子串数目。

样例
输入
aaa

输出
6
说明
长度为 1 的三个子串 "a" 长度为 2 的两个子串 "aa" 长度为 3 的一个子串 "aaa"

首先这种字符串得题目,数据范围为105除了那种一眼题。
剩下可以思考这两种方向
1:二分
2;O(n*26),就是枚举每一种字符串,然后在枚举整个字符串长度
或者O(26),就是枚举每一种字符

#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
typedef long long ll;
const int maxn=1e5+100;
ll cnt[maxn],len=0;
char a[maxn];
int main(){
	scanf("%s",a);
	len=strlen(a);
	for(int i=0;i<len;i++){
		cnt[a[i]-'a']++;
	}
	ll ans=len;
	for(int i=0;i<26;i++){
		ans=ans+(cnt[i]*(cnt[i]-1)/2);
	}
	cout<<ans<<endl;
}
posted @   lipu123  阅读(2)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
历史上的今天:
2023-01-14 springboot中的一些常用的知识
2021-01-14 区间变成等差数列(线段树)
2020-01-14 dp(装箱)
2020-01-14 dp(武功秘籍)
2020-01-14 Color the ball(差分数组)
2020-01-14 A Simple Problem with Integers(树状数组区间变化和区间求和)
2020-01-14 A - 敌兵布阵
点击右上角即可分享
微信分享提示