解题思路:遍历所有区间可能,如果起点和终点相同,那么就各自向中间移动一位,直到第一位不同。然后比较这一位,前大后小则ans++
注意事项:
参考代码:
#include <bits/stdc++.h> #define int long long #define pii pair<int,int> #define fi first #define se second #define endl "\n" #define pb push_back #define getl(s) getline(cin,s) #define max(a,b) a > b ? a : b #define min(a,b) a < b ? a : b #define abs(a) a > 0 ? a : -a #define lowbit(a) a & -a using namespace std; int n,res = 0; string s; signed main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin>>s;n = s.size(); for(int len = 2;len <= n;len++) for(int i = 0;i <= n - len;i++) { int l = i,r = l + len - 1; while(s[l] == s[r] && l <= r)l++,r--; if(l < r && s[l] > s[r])res++; } cout<<res; return 0; }
0.0分
5 人评分