zoukankan      html  css  js  c++  java
  • CodeForces 1316 B(字符串函数简单运用)

    题目

    这题真是做得我心态爆炸!

    题意:
    给你一个字符串,让你从第一个字符开始,将以它为开头的长度为 k 的子串翻转,这样的子串与剩下的串构成新串,接着从第二个字符开始直到第 n-k 个,找出这样构成的新串中字典序最小的,如有多个,k要最小的。

    这题可以通过简单的找规律发现:
    当n-k+1为奇数时,新串前一部分是原串前k个字符;为偶数时,前一部分是前k个字符翻转
    所以暴力比较所有新串,找出最小的即可。

    在解决本题之前,先介绍两个函数:
    子串截取函数 substr()
    头文件#include<string>

    string s1,s2;
    s1=s2.substr(i,k);//以为s1为s2从i位置开始,截取的长度为k的串,k不写默认到结尾
    

    reverse()函数
    头文件#include<algorithm>

    string s;
    reverse(s.begin(),s.end());//将s反转
    

    这两个函数让我初识了string类。。。

    string可以让字符串直接比较大小,相加,复制,非常方便

    AC代码:

    #include<iostream>
    #include<string>
    #include<algorithm>
    using namespace std;
    int main()
    {
        int T;
        cin>>T;
        while(T--)
        {
           int n;
           string s;
           cin>>n>>s;
           string ans=s;
           int pos=1;
           for(int i=0;i<n;i++)
           {
             string s1=s.substr(0,i);
             string s2=s.substr(i);
             if((n-i+1)%2==0)
                reverse(s1.begin(),s1.end());
             string temp=s2+s1;
             if(temp<ans)
             {
               ans=temp;
               pos=i+1;
             }
           }
           cout<<ans<<endl<<pos<<endl;
        }
    return 0;
    }
    

    感觉这次的博客写的不太好,不过主要还是为了通过这题总结string相关的函数

    戒骄戒躁,百炼成钢!
  • 相关阅读:
    Eclipse详细设置护眼背景色和字体颜色并导出
    详解equals()方法和hashCode()方法
    MFC+WinPcap编写一个嗅探器之七(协议)
    fastjson使用
    2017-04-07 开通博客
    开启mysql慢查询
    MYSQL介绍安装及一些问题解决
    python基础入门
    Linux重启与关机命令
    Scanner类与Random类
  • 原文地址:https://www.cnblogs.com/Pecoz/p/12423180.html
Copyright © 2011-2022 走看看