解决C++ 遇笔试题输入[[1,2,3,...,],[5,6,...,],...,[3,1,2,...,]]问题

news2024/12/28 18:48:11

目录

  • 0 引言
  • 1 思路
  • 2 测试结果
  • 3 完整代码
  • 4 总结

0 引言

  现在面临找工作问题,做了几场笔试,遇到了一个比较棘手的题目就是题目输入形式如下:

[ [3,1,1], [3,5,3], [3,2,1] ]

当时遇到这个问题还是比较慌的,主要是之前没有遇到这样的输入可能是太菜没刷的题目少了,在这里记录一下自己解决此类问题的方法,还有一个目的就是集思广益,看看还有没有其他解法我想学习学习。

1 思路

以下为我个人解题思路,仅供参考,希望有大佬能在评论区给出你的妙招,无论什么编程语言都可以,主打一个一起学习!!!

  • 首先:通过getline(cin,s)直接整行获取输入并存入字符串string s中,将获得的字符s中[[,[变为 ' ' (空字符)]]变为] ,以上述为例:处理后结果为

3,1,1] 3,5,3] 3,2,1]

  • 接着:使用stringstream ss(s)将字符串流分割字符串并存入数组,再使用getline(ss, token, ']')意思就是遇到]就将前面字符存入token中,并且需要循环存放到token中,接着上步结果处理得到

3,1,1
3,5,3
3,2,1

  • 最后:使用一维vector存放行矩阵,用二维vector存放多行矩阵即可

话不多说直接上写好的函数代码:

vector<vector<int>> vcenums(string input) {
    vector<vector<int>> array;
    // 第一步:
    for(int i = 0; i < input.size()-1; i++){
        if((input[i+1] == '[' && input[i] == '[') || (input[i+1] == '[' && input[i] == ',')){
            input[i] = ' ';
            input[i+1] = ' ';
        }else if(input[i+1] == ']' && input[i] == ']'){
            input[i+1] = ' ';
        }
    }
    input.erase(remove(input.begin(), input.end(), ' '), input.end());
    // cout << input << endl;           // 可以取消注释处理结果
    // 将获取的数据存放到vector中
    stringstream ss(input);
    string token;
    while (getline(ss, token, ']')) {
        // cout << token << endl;
        vector<int> row;
        stringstream row_ss(token);
        string element;
        while (getline(row_ss, element, ',')) {
            row.push_back(stoi(element));
        }
        array.push_back(row);
    }
    return array;
}

2 测试结果

测试用例输入:[[2,3,5,8,10],[11,2,1,5,4],[1,2,7,4,5],[6,9,0,1,4]]
在这里插入图片描述

3 完整代码

以下为完整代码仅供参考,如若有错欢迎提出,我及时更正

#include <iostream>
#include <vector>
#include <sstream>
#include <algorithm>
using namespace std;

vector<vector<int>> vcenums(string input) {
    vector<vector<int>> array;
    for(int i = 0; i < input.size()-1; i++){
        if((input[i+1] == '[' && input[i] == '[') || (input[i+1] == '[' && input[i] == ',')){
            input[i] = ' ';
            input[i+1] = ' ';
        }else if(input[i+1] == ']' && input[i] == ']'){
            input[i+1] = ' ';
        }
    }
    input.erase(remove(input.begin(), input.end(), ' '), input.end());
    cout << input << endl;
    // 使用字符串流分割字符串并存入数组
    stringstream ss(input);
    string token;
    while (getline(ss, token, ']')) {
        cout << token << endl;
        vector<int> row;
        stringstream row_ss(token);
        string element;
        while (getline(row_ss, element, ',')) {
            row.push_back(stoi(element));
        }
        array.push_back(row);
    }
    return array;
}



int main() {
    string s;
    vector<vector <int>> M;
    while(getline(cin,s)){
        M = vcenums(s);
        // 打印矩阵
        for(auto nums : M){
            for(auto i : nums){
                cout << i << " ";
            }
            cout << endl;
        }
    }
    return 0;
}

4 总结

其实可能有些笔试题不是很难,难在输入如何处理,不知道如何处理从而导致消耗了大量做其他题目时间,所以遇到困难的输入还是需要锻炼自己用代码记录一下并突破自己,下次遇到同样的输入情况就不会消耗大量时间。算是一种积累,以后可能会整个专栏存放一些不常见得输入。

这道笔试的题目题目描述是从矩阵的左上角寻找最优路径到达矩阵右下角(动态规划题)
这道题本身不难,就是有些时候真不知道处理输入会浪费大量时间,通过上面得处理就可以得到二维矩阵,然后就利用动态规划求出最短路径。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/974155.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

RHCA之路---EX280(2)

RHCA之路—EX280(2) 1. 题目 Associate the share named /exports/registry to the built-in registry running within your OpenShift Enterprise instance so that it will be used for permanent storage Use exam-registry-volume for the volume name and exam-registry-…

公司内部传文件怎么安全——「用绿盾透明加密软件」

为保证公司内部文件传递的安全性&#xff0c;可以使用天锐绿盾透明加密软件来进行保护。以下是具体的操作步骤&#xff1a; 在公司内部部署天锐绿盾加密软件&#xff0c;确保需要传递的文件都能受到加密保护。 在员工的工作电脑上安装天锐绿盾客户端&#xff0c;并设置好相关的…

C++学习记录——삼십이 C++IO流

文章目录 1、C标准IO流2、C文件IO流1、二进制读写2、文本读写 3、stringstream 1、C标准IO流 C语言的printf和scanf无法很好的输入输出自定义类型&#xff0c;且还需要程序员自己确定类型&#xff0c;所以C就引入了输入流和输出流&#xff0c;是设备和内存之间的沟通。 其实io…

Gin学习记录3——模版与渲染

模版与渲染 一. 返回二. 模版2.1 基础模版2.2 同名模版2.3 模版继承2.4 模版语法 一. 返回 如果只是想返回数据&#xff0c;可以使用以下函数&#xff1a; func (c *Context) JSON(code int, obj any) func (c *Context) JSONP(code int, obj any) func (c *Context) String(…

阿里后端开发:抽象建模经典案例

0.引言 在互联网行业&#xff0c;软件工程师面对的产品需求大都是以具象的现实世界事物概念来描述的&#xff0c;遵循的是人类世界的自然语言&#xff0c;而软件世界里通行的则是机器语言&#xff0c;两者间跨度太大&#xff0c;需要一座桥梁来联通&#xff0c;抽象建模便是打…

一文读懂HOOPS Native平台:快速开发桌面端、移动端3D应用程序!

HOOPS Native Platform是用于在桌面和移动平台以及混合现实应用程序上构建3D工程应用程序的首要工具包。它由三个集成良好的软件开发工具包(SDK)组成&#xff1a;HOOPS Visualize、HOOPS Exchange、HOOPS Publish。HOOPS Visualize 是一个强大的图形引擎&#xff0c;适用于本机…

lement-ui 加载本地图片

实现图片展示时&#xff0c;发先本地的图片加载不了。 代码&#xff1a; <template><div><el-image src"../assets/logo.png" ></el-image></div> </template>结果发现不对&#xff0c;加载不出来&#xff0c;一查资料&#xf…

【Java】Jxls--轻松生成 Excel

1、介绍 Jxls 是一个小型 Java 库&#xff0c;可以轻松生成 Excel 报告。Jxls 在 Excel 模板中使用特殊标记来定义输出格式和数据布局。 Java 有一些用于创建 Excel 文件的库&#xff0c;例如Apache POI。这些库都很好&#xff0c;但都是一些较底层的库&#xff0c;因为它们要…

代码随想录算法训练营第42天 | ● 01背包问题,你该了解这些! ● 01背包问题,你该了解这些! 滚动数组 ● 416. 分割等和子集

文章目录 前言一、01背包问题&#xff0c;你该了解这些&#xff01;二、01背包问题&#xff0c;你该了解这些&#xff01; 滚动数组三、416. 分割等和子集总结 前言 01背包 一、01背包问题&#xff0c;你该了解这些&#xff01; 确定dp数组以及下标的含义 对于背包问题&#x…

2605. 从两个数字数组里生成最小数字

文章目录 Tag题目来源题目解读解题思路方法一&#xff1a;枚举比较法方法二&#xff1a;集合的位运算表示法 写在最后 Tag 【贪心】【位运算】【数组】 题目来源 2605. 从两个数字数组里生成最小数字 题目解读 给定两个各自只包含数字 1 到 9 的两个数组&#xff0c;每个数组…

git中的cherry-pick和merge有些区别以及cherry-pick怎么用

git中的cherry-pick和merge在使用场景上有些区别: cherry-pick用于将另一个分支的某一次或几次commit应用到当前分支。它可以选择性地拉取代码修改。merge用于将两个分支合并成一个新分支。它会把整个分支上的所有修改都合并过来。 具体区别:cherry-pick通常用于将bug修复从发…

Knife4j框架

简介&#xff1a;Knife4j是一款在线API文档框架&#xff0c;可以基于当前项目的控制器类中的配置生成文档&#xff0c;并自带调试功能。通俗来说就是将controller里面请求的接口文档化&#xff0c;便于前端人员熟知请求方式和参数。并且能自动化根据controller的更新而跟新。 用…

“历久弥新 | 用AI修复亚运珍贵史料”活动震撼来袭!

时隔近半个世纪&#xff0c;新中国第一次参与亚运会的影像资料将首次对外披露。只是年代久远&#xff0c;老照片老视频都有了岁月痕迹&#xff0c;画面不再清晰&#xff0c;这些珍贵史料急需你的帮助&#xff01; 一、活动介绍 2023年&#xff0c;正值亚运110周年&#xff0c…

VBA技术资料MF52:VBA_在Excel中突出显示前 10 个值

【分享成果&#xff0c;随喜正能量】一言之善&#xff0c;重于千金。善良不分大小&#xff0c;有时候你以为的一句话&#xff0c;小小的举手之劳&#xff0c;也可能就是别人的救赎&#xff01;不要吝啬你的善良&#xff0c;因为你永远不知道那小小的善良能给多少人带来光明。。…

RTSP协议学习

文章目录 RTSP协议学习单播&#xff0c;组播&#xff0c;广播单播&#xff08;Unicast&#xff09;和组播&#xff08;Multicast&#xff09;广播&#xff08;Broadcast&#xff09;学习思维导图一览 RTSP协议学习 ##工作原理 RTSP&#xff08;Real-Time Streaming Protocol&…

正中优配:证券是什么意思?

这是一个经常被提及但相同也经常被人们疏忽的问题。事实上&#xff0c;证券是金融商场中一个重要的概念&#xff0c;对于出资者和经济展开都有着至关重要的效果。本文将从多个视点出发&#xff0c;探讨证券的意义和重要性。 一、定义和方法 证券是指可以转让的金融资产&#x…

Elasticsearch,Logstash和Kibana安装部署(ELK Stack)

前言 当今数字化时代&#xff0c;信息的快速增长使得各类组织和企业面临着海量数据的处理和分析挑战。在这样的背景下&#xff0c;ELK Stack&#xff08;Elasticsearch、Logstash 和 Kibana&#xff09;作为一套强大的开源工具组合&#xff0c;成为了解决数据管理、搜索和可视…

开发神器VSCode配置C/C++环境

hi&#xff0c;小伙伴们大家好&#xff0c;今天给大家介绍一款程序员常用的开发神器VSCode&#xff0c;想必大家肯定有所了解&#xff0c;也有很多小伙伴在日常工作中经常使用。当木荣君初次见到VSCode时&#xff0c;真正的被它惊艳到了&#xff0c;可以说是一见钟情。从此就爱…

iftop工具详解——网络流量监控利器(详解+示例+实战)

1 iftop命令 iftop是一款用于监控网络流量的命令行工具。它可以实时显示正在通过网络接口传输的数据流量信息,包括源和目标IP地址、端口号、数据传输速率等。 iftop 是 Linux 系统一个免费的网卡实时流量监控工具,类似于 top 命令。iftop 可以监控指定网卡的实时流量、端口连…

AIGC+思维导图:提升你的学习与工作效率的「神器」

目录 一、产品简介 二、功能介绍 2.1 AI一句话生成思维导图 2.2百万模版免费用 2.3分屏视图&#xff0c;一屏读写 2.4团队空间&#xff0c;多人协作 2.5 云端跨平台化 2.6 免费够用&#xff0c;会员功能更强大 2.7 支持多种格式的导入导出 三、使用教程 3.1 使用AI…