zoukankan      html  css  js  c++  java
  • 回文串的题解

    给定一个由 a-z 和*组成的字符串,其中*可以被替代成任何 a-z 中的字符。
    询问将*替换后字典序最小的回文字符串,无解输出-1。

    尺取好啊!

    22 边往中间扫。

    #include <bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    template<typename T>inline void read(T &FF){
    	T RR=1;FF=0;char CH=getchar();
    	for(;!isdigit(CH);CH=getchar())if(CH=='-')RR=-1;
    	for(;isdigit(CH);CH=getchar())FF=(FF<<1)+(FF<<3)+(CH^48);
    	FF*=RR;
    }
    template<typename T>inline void write(T x){
    	if(x<0)putchar('-'),x*=-1;
    	if(x>9)write(x/10);
    	putchar(x%10+48);
    }
    template<typename T>inline void writen(T x){
    	write(x);
    	puts("");
    }
    string st;
    void work(int l,int r){
    	if(st[l]=='*'){
    		if(st[r]=='*')st[l]=st[r]='a';
    		else st[l]=st[r];
    	}else{
    		if(st[r]=='*')st[r]=st[l];
    		else if(st[l]!=st[r]){
    				puts("-1");
    				exit(0);
    			}
    	}
    }
    int main(){
    	cin>>st;
    	int n=st.size();
    	st=' '+st;
    	int l=1,r=n;
    	while(l<=r){
    		work(l,r);
    		l++;r--;
    	}
    	for(int i=1;i<=n;i++)cout<<st[i];
    	return 0;
    }
    
  • 相关阅读:
    redis
    装饰器之functools与before_request
    版本
    git常用命令
    支付宝支付示例
    ContentType
    vue的基础使用
    es6简单介绍
    解析器、路由控制、分页与响应器
    元素水平居中的方法
  • 原文地址:https://www.cnblogs.com/zhaohaikun/p/12816940.html
Copyright © 2011-2022 走看看