牛客2022年除夕AK场——c++中string字符串的小小使用(笔记而已,勿喷就好)

题目链接登录—专业IT笔试面试备考平台_牛客网

 

 

 思路

把X 都可以当成 9 来看,因为求的是最大的可能。

所以把所有 X 替换成 9 ,排序一下即可。【排序就很大有文章哦,这可能就是c++的方便之处吧】

在此,我就稍微普及一下c++的string类做题小用法吧,【注意注意菜鸟我还没开始学习c++的具体内容,一切只能从简描述一下吼】

string的小应用 ——就是针对字符串

输入输出

string 用来定义一维字符串        string a;//相当于char a[ ];但是不用考虑a字符串大小,方便*1

头文件#include<string.h>

用c++的输入输出         cin>>s,输入,cout<<s,输出

注意欸——

string str;
cin>>str;
当执行上述语句时,若输入“hello world!”,则只会输出hello。

因为cin语句输入时,遇空格结束,不能用cin输入多个单词。

要是有空格,这要用到这个函数getline(cin,str)(包含头文件#include <string)
注意:gets()函数不能输入字符串,因为gets(s)中,s为字符串数组名或字符串指针。如果用gets(str)就会错误,str是string类型的变量,既不是数组名也不是字符串指针。

cout就没啥问题【i了i了】

一些可爱的应用与小可爱的函数

String类的构造函数和析构函数如下:
a)      string s;    //生成一个空字符串s
b)      string s(str) //拷贝构造函数 生成str的复制品
c)      string s(str,stridx) //将字符串str内“始于位置stridx”的部分当作字符串的初值
d)      string s(str,stridx,strlen) //将字符串str内“始于stridx且长度顶多strlen”的部分作为字符串的初值

e)      string s(cstr) //将C字符串作为s的初值
f)      string s(chars,chars_len) //将C字符串前chars_len个字符作为字符串s的初值。
g)      string s(num,c) //生成一个字符串,包含num个c字符
h)      string s(beg,end) //以区间beg;end(不包含end)内的字符作为字符串s的初值
i)      s.~string() //销毁所有字符,释放内存

这些基本的赋值粘贴,和取部分字符串,都是很常用的哦

还有赋值,比大小啥的函数

string a,b;

a=b;

就是将b的内容赋值给a,但是b的内容不会变化,还有很多【对,我不会】但对于此题目还是绰绰有余啦

 

看代码

#include<bits/stdc++.h>        //万能开头
using namespace std;
bool strcpm(string s1,string s2)        //bool类型判断
{
    if(s1.size()!=s2.size())
        return s1.size()>s2.size();        //满足s1.size()>s2.size()则返回真,否则返回假
    return s1>s2;
    //这个字符串比较字典序大小,s1字典序大于s2,返回真,否则返回假
}
int main()
{
    int n,i,j,id=0;
    string x=" ";                        //使用 string 时先给其初始化,否则可能出现未知错误
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        string s;
        cin>>s;

        for(j=0;j<s.length();j++)        //s.length(),string类型
            if(s[j]=='X')
                s[j]='9';                //替换

        if(strcpm(s,x))                    //比较替换
        {
            x=s;
            id=i;
        }
    }
    printf("%d\n",id);        
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值