字符串处理

简介: 字符串处理


题目描述

在给出一个字符串 S ,计算 S中有多少连续子串是回文串。

输入

输入包含多组测试数据。每组输入是一个非空字符串,长度不超过3000 。测试数据不超过3000 行。

输出

对于每组输入,输出的回文子串的个数。

样例输入1

aba

aa

样例输出1

4

3

做法1

我们可以通过“枚举回文串中心”并“不断向外扩展”的方式,来找出所有的回文子串。

注意,奇数长度和偶数长度的回文串在处理的方式上存在一些差别,因此可能需要分别统计。

#include <bits/stdc++.h>
using namespace std;
int main() {
    string s;
    while (cin >> s) {
        int ans = 0;
        for (int i = 0, len; i < s.size(); ++i) {
            /* 统计奇数长度的回文串 */
            len = 0;
            while (i - len >= 0 && i + len < s.size() && s[i - len] == s[i + len]) {
                ++ans;
                ++len;
            }
            /* 统计偶数长度的回文串 */
            len = 0;
            while (i - len >= 0 && i + 1 + len <= s.size() && s[i - len] == s[i + 1 + len]) {
                ++ans;
                ++len;
            }
        }
        cout << ans << endl;
    }
    return 0;
}
相关文章
|
7月前
|
C++
18字符串处理函数
18字符串处理函数
26 0
|
6天前
|
安全
字符串处理
String类: String是一个不可变类,一旦创建就不能修改。 String greeting = "Hello"; greeting = greeting + " World!"; System.out.println(greeting); // 输出: Hello World! StringBuilder和StringBuffer: 这两个类用于可变字符串操作,StringBuilder在单线程环境下使用,而StringBuffer是线程安全的。 StringBuilder sb = new StringBuilder("Hello"); sb
|
18天前
c常用 字符串处理函数
字符串处理函数 puts()将一个字符串输出到终端 gets()从终端输入一个字符串到字符数组,并且得到一个函数值。 strcat()链接两个字符数组中的字符串。 strcpy()字符串复制函数。 strcmp()比较字符串作用。 strlen()测试字符串长度的函数不包括“\0” strlwr()将字符串中的大写字母转换为小写字母。 strupr()将字符串中的小写字母转换为大写字母。
31 7
字符串操作详解
字符串操作详解
|
7月前
|
C++
c++字符串操作
c++字符串操作
62 0
C/C++字符串处理函数
C/C++字符串处理函数
|
C++ 容器
C++ 字符串操作
文章目录 1.1 C++ 字符串操作 2.2字符数组的常用操作 2.3遍历字符数组的字符 3.标准库类型string 3.1 定义和初始化 3.2 string的操作 1)读写操作 2)使用`getline`读取一整行 3)string的方法操作 4)字符串和string相加 3.3处理string对象中的字符
|
Shell 编译器 iOS开发
字符串处理函数1
一、字符数组 二、字符串处理函数
字符串处理方法
字符串处理方法
112 0
字符串处理方法
|
存储 Windows 容器
字符串操作的全面总结(1)
字符串操作的全面总结
175 0
字符串操作的全面总结(1)