前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【C/C++】速通某站上的经典“笔试”编程题

【C/C++】速通某站上的经典“笔试”编程题

作者头像
六点半就起.
发布2024-10-16 16:03:50
1260
发布2024-10-16 16:03:50
举报
文章被收录于专栏:六点半就起来干博客!
【C/C++】速通某站上的经典“笔试”编程题

一. 题目描述:

解题思路:

将区间里面的数依次取模10(%)、除10,作用是大于等于10的数单独拆开(如123,依次拆开为3,2,1),判断是否等于2,如果是就count++;最后count数值为所求。 关键1. 一个数取模10后的数值等于其个位数上的数值(如:123 % 10 = 3) 2. 一个数除10后的数值等于其去掉个位上的数的数值(如:123 / 10 = 12)

代码实现:
代码语言:javascript
复制
#include <iostream>
using namespace std;

int main() {
    int a, b;//输入区间
    int m;//中间转换变量
    int count = 0;//计数
    scanf("%d %d", &a, &b);
    for(int i = a; i <= b; i++)
    {
        int tmp = i;
        while(tmp >= 2)
        {
            m = tmp % 10;
            if(m == 2)
            {
                count++;
            }
            tmp /= 10;
        }
    }
    cout << count;
}

二. 题目描述:

解题思路:

先将这两个数组排序(关键1);创建一个vector变量tmp,直接双重循环依次比较所有元素;然后分两情况(1. tmp为空 ; 2. tmp不为空)插入到tmp中,不为空时要控制tmp中已有元素不再插入到tmp中(关键2);tmp为空时直接插入;

代码实现:
代码语言:javascript
复制
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param nums1 int整型vector 
     * @param nums2 int整型vector 
     * @return int整型vector
     */
    vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
        vector<int> tmp;
        sort(nums1.begin(), nums1.end());//将nums1排序
        sort(nums2.begin(), nums2.end());//将nums2排序
        for(int i = 0; i < nums1.size(); i++)
        {
            for(int j = 0 ; j < nums2.size(); j++)
            {
                if(tmp.empty() && nums1[i] == nums2[j])
                tmp.push_back(nums1[i]);
                if(!tmp.empty() && nums1[i] == nums2[j] && nums1[i] != tmp[tmp.size() - 1])
                tmp.push_back(nums1[i]);
            }
        }
        return tmp;
    }
};

三. 题目描述:

解题思路:

创建一个string变量,充分利用迭代器(指针);依次判断相邻两个数是否相等,等则删除这两个数(注意迭代器的运用是关键);上面的示例二和示例三是两种特殊情况,控制这里的迭代器越界问题是关键;

代码实现:
代码语言:javascript
复制
#include <iostream>
#include<string>
using namespace std;

int main() {
    string tmp;
    cin >> tmp;
    auto it = tmp.begin();
    while(it != tmp.end() - 1)
    {
        if(*it != *(it + 1))
        it++;
        if(*it == *(it + 1))
        {
            it = tmp.erase(it);
            it = tmp.erase(it);
            it -= 1;
        }
    }
    
    if(tmp.empty())
    cout << '0';
    else
    cout << tmp;
}

学习C++必看网站

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-10-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 【C/C++】速通某站上的经典“笔试”编程题
  • 一. 题目描述:
    • 解题思路:
      • 代码实现:
  • 二. 题目描述:
    • 解题思路:
      • 代码实现:
  • 三. 题目描述:
    • 解题思路:
      • 代码实现:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档