• zoj 2744 Palindromes


    Palindromes

    Time Limit: 2 Seconds      Memory Limit: 65536 KB

    A regular palindrome is a string of numbers or letters that is the same forward as backward. For example, the string "ABCDEDCBA" is a palindrome because it is the same when the string is read from left to right as when the string is read from right to left.

    Now give you a string S, you should count how many palindromes in any consecutive substring of S.

    Input

    There are several test cases in the input. Each case contains a non-empty string which has no more than 5000 characters.

    Proceed to the end of file.

    Output

    A single line with the number of palindrome substrings for each case.

    Sample Input

    aba
    aa

    Sample Output

    4
    3

    题意:求一个串的所有回文字串的个数,这里要讨论串是奇数串还是偶数串,我的处理办法是将其变成奇数串,详细见代码。

     1 #include <iostream>
     2 #include <string>
     3 #include <cstdio>
     4 using namespace std;
     5 int main(){
     6     string s1, s2 = "#";
     7     int left, right, count;
     8     while(cin >> s1){
     9         s2 = "#";
    10         int len1 = s1.length();
    11         //将串变成奇数串,避免分情况讨论,以前学习求最长回文字串的一个算法,看到的处理办法,挺好的 
    12         for(int i = 0; i < len1; i++){
    13             s2 += s1[i];
    14             s2 += '#';
    15         }
    16         int len2 = s2.length();
    17         count = len1;//每个字符本身都算一个回文串 
    18         for(int i = 1; i < len2 - 1; i++){
    19             left = i - 1;
    20             right = i + 1;
    21             //中心向外扩散,一遇到不是回文串,那么再向外扩散的串都不是回文串 
    22             while(left >= 0 && right < len2 && s2[left] == s2[right]){
    23                 if(s2[left] != '#')
    24                     count++;
    25                 left--;
    26                 right++;
    27             }
    28         }
    29         printf("%d
    ", count);
    30     }
    31     return 0;
    32 }
  • 相关阅读:
    使用ViewPager实现三个fragment切换
    handler
    Android 源码解析之AsyncTask
    android的生命周期
    安卓在SQLiteOpenHelper类进行版本升级和降级
    安卓ListView操作的两种方法
    表格布局TableLayout
    线性布局和相对布局
    遇到tomcat端口被占用问题解决方案
    easyUI笔记09.03
  • 原文地址:https://www.cnblogs.com/qinduanyinghua/p/6529732.html
Copyright © 2020-2023  润新知