牛客华为刷题笔记(一)

简单记录一下牛客华为刷题C++,以下为个人刷题思路,仅供参考,代码亲测可通过。

目录

1.字符串最后一个单词的长度

2.计算某字符出现次数

3.明明的随机数

4.字符串分割

5、进制转换

1.字符串最后一个单词的长度

一段英文字符串中最后一个单词的长度。
因为输入的字符串由空格,因此使用getline

str.size()函数可以读取字符串的实际长度,包括空格。

#include <iostream>
#include <string>
using namespace std;

int main() {
    string str;
    int getNum = 0;
    getline(cin, str);
    int i = str.size()-1;
    while(str[i] != ' ' &&  i >= 0)
    {
        getNum++;
        i--;
    }
    cout << getNum;
}

2.计算某字符出现次数

tolower()函数,将大写转换成小写,数字不变。

#include <iostream>
using namespace std;

int main() {
  string  str;
  char target;
  int num = 0;
  getline(cin,str);
  cin >> target;
  for( int i = 0; i < str.size(); i++)
  {

    if(tolower(str[i]) == tolower(target)) 
    {   
        num++;
    }
  }
   cout<<num<<endl;
}

3.明明的随机数

set容器,用二叉树实现,有以下两个特点:

1. set中的元素不允许重复;

2. set内部会维护一个严格的弱排序关系。

#include <iostream>
#include<set>
using namespace std;

int main() {
    
    set<int>s;
    int num = 0;
    int inputNum;
    cin >> num;
    for (int i = 0; i < num; i++)
    {
        cin >> inputNum;
        s.insert(inputNum);
    }
    set<int>::iterator it;
    for (it = s.begin(); it != s.end(); it++)
    {
        cout << *it<<endl;
    }

}

4.字符串分割

思路:现将字符串补齐位8的倍数再分隔;

append()函数 在字符串后面添加‘0’

substr()函数 获得字符串中从0 到第8位输出,八个为一循环

#include <iostream>
using namespace std;

int main() {
    string str;
    cin >> str;
    while (str.size() % 8 != 0)
    {
        int count = 8 - str.size() % 8;
        str.append(count, '0');
    }
    for (int i = 0; i < str.size(); i += 8)
    {
        cout << str.substr(i, 8) << endl;
    }
}

5、进制转换

cin 和cout默认情况下是按照十进制输出的

八进制:oct

十六进制:hex

十进制:dec

#include <iostream>
using namespace std;

int main() {
    int a;
    cin >>hex>> a;
    cout <<dec<< a;
}

纠正:按照题目要求,应该是输入一个字符串,不同组的测试用例用\n隔开。

stoi(const std::string& str, std::size_t* pos = 0, int base = 10);

功能:将字符串 str 转成 int 整数
参数:
str:字符串
pos:存储将字符串 str 转成 int 整数,处理了 str 中字符的个数的地址,默认为 NULL,如果是3,就只转换前三个数
base:进制,10:十进制,8:八进制,16:十六进制,0:则自动检测数值进制,str 是 0 开头为八进制,str 是 0x 或 0X 开头是十六进制,默认为十进制

#include <iostream>
#include<string>
using namespace std;

int main() {
    string a;
    while(cin >> a)
    {
        cout << stoi(a, NULL, 16) <<endl;
    }
}

说明:本博客所有内容为参考书籍以及他人博客总结,为个人学习笔记所用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值