首页 > 其他分享 >回文串

回文串

时间:2022-11-19 09:56:31浏览次数:37  
标签:t123123123123123123 int 没填 len length 回文

 

 

 

 这道题目我直接在程序上注释了:

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int main()
 4 {
 5     int t123123123123123123,a,b;
 6     cin>>t123123123123123123;//防重名 
 7     while(t123123123123123123--)
 8     {
 9         string s;
10         scanf("%d%d\n",&a,&b);//要吃换行因为↓(getline) 吃换行会影响结果 
11         getline(cin,s);//防止有空格 
12         int len=s.length();//不用多次计算s.length() 
13         int t=0;//状态在前边为1表示给的就不是个回文串不必再计算 
14         for(int i=0;i<len;i++)
15         {
16             if(s[i]!='?')//如果有值可以考虑给对面的赋值 
17             {
18                 if(s[len-1-i]!='?'&&s[len-1-i]!=s[i])//如果对面也有值但不相等说明给的就不是个回文串不必再计算 
19                 {
20                     t=1;
21                     break;
22                 }
23                 else if(s[len-1-i]=='?') s[len-1-i]=s[i];//如果对面需要赋值就给他赋值成s[i] 
24             }
25         }
26         if(t)
27         {//如果给的就不是个回文串不必再计算  
28             printf("NO\n");
29             continue;
30         }
31         for(int i=0;i<s.length();i++)//统计各用了多少 
32         {
33             if(s[i]=='0')  a--;
34             else if(s[i]=='1') b--;
35         }
36         if(a<0||b<0)//用多了不必再计算 
37         {
38             printf("NO\n");
39             continue;
40         }//a b 表示括号里可以填几个1 0 
41         t=0;
42         for(int i=0;i<len;i++)
43         {
44             if(s[i]=='?')//需要填 
45             {
46                 if(i==len-1-i)//是中间值 
47                 {
48                     if(a&1)//哪个是奇数用谁 
49                     {
50                         s[i]='0';
51                         a--;
52                     }
53                     else if(b&1)
54                     {
55                         s[i]='1';
56                         b--;
57                     }
58                     else//还没填完就不够了不必再计算 
59                     {
60                         t=1;
61                         break;
62                     }
63                 }
64                 else
65                 {
66                     if(a>=2)//可以同时填两个一个自己,一个对面 
67                     {
68                         a-=2;
69                         s[i]=s[len-1-i]='0';
70                     }
71                     else if(b>=2)
72                     {
73                         b-=2;
74                         s[i]=s[len-1-i]='1';
75                     }
76                     else//还没填完就不够了不必再计算
77                     {
78                         t=1;
79                         break;
80                     }
81                 }
82             }
83         }
84         if(t==1)//还没填完就不够了
85         {
86             printf("NO\n");
87             continue;
88         }
89         printf("YES\n");
90     }
91     return 0;
92 }

 

标签:t123123123123123123,int,没填,len,length,回文
From: https://www.cnblogs.com/wjk53233/p/16905484.html

相关文章

  • 循环练习-判断回文数
    Scanners=newScanner(System.in);//引用键盘录入功能System.out.println("本程序用于判断回文数,请输入您要判断的值:");intx=s.nextInt();//将键盘输入的......
  • 线性DP-2472. 不重叠回文子字符串的最大数目
    问题描述给你一个字符串s和一个正整数k。从字符串s中选出一组满足下述条件且不重叠的子字符串:每个子字符串的长度至少为k。每个子字符串是一个回文串......
  • 回文树
    回文树(EERTree,PalindromicTree)亦称回文自动机,用于存储一个串中的所有回文子串。由于回文串可能有奇有偶,于是分为两棵树进行构建,偶跟编号为0,长度为0,fail指向奇根,奇根编......
  • leetcode 5. 最长回文子串
    给你一个字符串 s,找到 s 中最长的回文子串。 示例1:输入:s="babad"输出:"bab"解释:"aba"同样是符合题意的答案。示例2:输入:s="cbbd"输出:"bb" 提示:1<......
  • leetcode 647. 回文子串 js实现
    给你一个字符串 s ,请你统计并返回这个字符串中 回文子串 的数目。回文字符串 是正着读和倒过来读一样的字符串。子字符串 是字符串中的由连续字符组成的一个序列。......
  • 洛谷刷题_P217 [USACO1.5]回文质数 Prime Palindromes
    题目P217[USACO1.5]回文质数PrimePalindromes题目链接https://www.luogu.com.cn/problem/P1217知识点埃氏筛原理:要得到自然数n以内的全部素数,必须把不大于根号n......
  • 判断是否为回文字符串, StringBuffer对象的reverse()方法,返回值toString()
      import java.util.*;public class Solution {    /**     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可    ......
  • 力扣-647-回文子串
    因为单字符也算是回文,所以至少有n个然后感觉又是二维dp感觉很像回溯解决排列组合问题感觉难点在于还要判断是不是回文,虽然可以借助栈,但是每次都压栈弹栈肯定复杂度太大......
  • HDU 3608 最长回文
    ProblemDescription给出一个只由小写英文字符a,b,c...y,z组成的字符串S,求S中最长回文串的长度.回文就是正反读都是一样的字符串,如aba,abba等 Inp......
  • 回文自动机PAM从菜到菜
    回文自动机基础操作两个初始状态一个长度为\(0,-1\)的偶回文根和奇回文根。转移\(\delta(x,c)\)从\(x\)节点代表的回文串转移到两端加入字符\(c\)后到达的节点......