• codeforces 505A. Mr. Kitayuta's Gift 解题报告


    题目链接:http://codeforces.com/problemset/problem/505/A

    题目意思:给出一个长度不大于10的小写英文字符串 s,问是否能通过在字符串的某个位置插入一个字母,使得新得到的字符串成为回文串。

      /**************************************(又到自我反省时刻)

          做的时候,通过添加一个单位使得长度增加1,找出中点,检验前一半的位置,找出对称位置替换成对应的前一半位置的字符,然后原字符串剩下的部分追加到后面,再判断回文。但是由于求对称点老是出问题,终于败下阵来了 !_!   。。。。

      不是非一般复杂啊啊啊!!

      ***************************************/

          题解说,由于长度很短,可以一个一个位置尝试,每个位置又一个一个字母填入,判断是否回文。对string 还是很生疏啦。

          一个一个试是这个意思:

      例如 dog,先是adog,  bdog,  ...,  zdog; 接着是daog, dbog, ..., dzog; 直到doga, ..., dogz 结束。

      然后就是谈谈string substr 这个函数了

      假如 string s = "12345asdf"; 

          那么 s.substr(0, 5) 答案是 12345。// 就是从下标 0 开始,将长度为5的子串选中,所以就是12345了

          更详细的用法,可参考这个链接:

          http://www.cplusplus.com/reference/string/string/substr/

          那么代码中的 s.substr(0, i) 和 s.substr(i) 一起用,就构成原字符串了,这个是字母的插入

    string(1, j)

         

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstdlib>
     4 #include <algorithm>
     5 using namespace std;
     6 
     7 int main()
     8 {
     9     #ifndef ONLINE_JUDGE
    10         freopen("in.txt", "r", stdin);
    11     #endif // ONLINE_JUDGE
    12 
    13     string s;
    14     while (cin >> s) {
    15         bool flag = false;
    16         for (int i = 0; i < s.size()+1 && !flag; i++) {
    17             for (int j = 'a'; j < 'z'+1 && !flag; j++) {
    18                 string t = s.substr(0, i) + string(1, j) + s.substr(i);
    19                 string u = t;     
    20                 reverse(u.begin(), u.end());    // 回文串巧妙处理
    21                 if (t == u) {
    22                     flag = true;
    23                     cout << t << endl;
    24                     break;
    25                 }
    26             }
    27         }
    28         if (!flag)
    29             cout << "NA" << endl;
    30     }
    31 }

          

          

  • 相关阅读:
    多线程-threading模块3
    多线程-threading模块2
    多线程-threading模块
    mac下载模块时报错OSError: [Errno 13] Permission denied: '/Library/Python/2.7/site-packages/chardet'
    python+selenium高亮显示正在操作的页面元素
    判断元素是否存在页面的两种不同写法
    [转]Python+Selenium之expected_conditions:各种判断(上)
    MACE移植要求
    采用Tensorflow内部函数直接对模型进行冻结
    如何正确可视化RAW(ARW,DNG,raw等格式)图像?
  • 原文地址:https://www.cnblogs.com/windysai/p/4254558.html
Copyright © 2020-2023  润新知