卡码网笔试 | 118 小y删数字、119 小红的字符串切割、120 小红的数字匹配

2024-05-27 01:36

本文主要是介绍卡码网笔试 | 118 小y删数字、119 小红的字符串切割、120 小红的数字匹配,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

118 小y删数字

逐个数字循环除10,并且用一个变量记录非0位数,最后加起来即可。

代码如下:

#include <iostream>using namespace std;int main() {int n;cin >> n;int a[n];int sum = 0;for (int i = 0; i < n; i++) cin >> a[i];for (int i = 0; i < n; i++) {while (a[i]) {if (a[i] % 10 > 0) sum++;a[i] /= 10;}}cout << sum << endl;
}

119 小红的字符串切割

双指针。

用一个end变量记录相同字符串最后一个字符的下标,每次i和i + 1比较得到两者是否相等的情况来维护end变量的值。每次end更新的,start 赋为 end + 1。当确定end是相同字符串最后一个字符的下标或者是整个字符串最后一个字符的下标时,我们用end - start + 1得到相同字符串的长度。

之后根据字符串长度进行处理,如果是奇数且>=3,直接放入记录结果的向量中。如果是偶数,大于4的可以拆分前面三个字符为一个字符串,放入向量,后面也直接放入即可。其他情况直接输出-1并进入到下一轮循环中去即可。

代码如下:

#include <iostream>
#include <string>
#include <vector>
using namespace std;int main() {int n;cin >> n;if (n < 3) {cout << -1 << endl;return 0;}string s;cin >> s;vector<string> vec;int start = 0, end = 0;for (int i = 0; i < n; i++) {if (i + 1 < n && s[i + 1] == s[i]) {end++;} else {if (end - start +1 < 3) {cout << -1 << endl;return 0;} else {if ((end - start + 1) % 2 == 1) {string ss = s.substr(start, end - start + 1);vec.push_back(ss);} else if ((end - start + 1) == 4) {cout << -1 << endl;return 0;} else {string ss = s.substr(start, 3);vec.push_back(ss);ss = s.substr(start + 3, end - start - 2);vec.push_back(ss);}start = end + 1;end++;}}}for (int i = 0; i < vec.size(); i++) {cout << vec[i] << ' ';}
}

120 小红的数字匹配

这题主要分成这么三个步骤:

1、统计问号字符个数;

2、将k转化为对应大小的字符

3、将转化后的字符填入到原来问号字符中去

由于java中nextInt()后会有换行符或者空格残留,因此在读取字符串之前还要再用一个nextLint()缓冲下。在用字符串之前,我们可以用toCharArray()把它转化为一个字符数组,最后再用String的构造函数把它转化为字符串返回。

大致代码如下:

import java.util.*;public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);int t = in.nextInt();while (t-- > 0) {in.nextLine();String s = in.nextLine();int k = in.nextInt();if (s.charAt(0) == '0' && s.length() > 1) {System.out.println(-1);continue;}char[] c = s.toCharArray();int num = 0;for (int i = 0; i < c.length; i++) {if (c[i] == '?') num++;}if (num == 0 && k > 0) {System.out.println(-1);continue;}int flag = 1;k--;for (int i = 0; i < c.length; i++) {if (c[i] == '?') {num--;int x = k / (int)Math.pow(10, num);if (i == 0 && x > 8) {flag = 0; break;} else if (x > 9) {flag = 0; break;} else {if (i == 0) c[i] = (char)(x + 1 + '0');// else if (num == 0) c[i] = x == 0 ? '0' : (char)(x - 1 + '0');else c[i] = (char)(x + '0');k %= Math.pow(10, num);}}}if (flag == 0) System.out.println(-1);else System.out.println(new String(c));}}
}

这篇关于卡码网笔试 | 118 小y删数字、119 小红的字符串切割、120 小红的数字匹配的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1006158

相关文章

从去中心化到智能化:Web3如何与AI共同塑造数字生态

在数字时代的演进中,Web3和人工智能(AI)正成为塑造未来互联网的两大核心力量。Web3的去中心化理念与AI的智能化技术,正相互交织,共同推动数字生态的变革。本文将探讨Web3与AI的融合如何改变数字世界,并展望这一新兴组合如何重塑我们的在线体验。 Web3的去中心化愿景 Web3代表了互联网的第三代发展,它基于去中心化的区块链技术,旨在创建一个开放、透明且用户主导的数字生态。不同于传统

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

usaco 1.2 Name That Number(数字字母转化)

巧妙的利用code[b[0]-'A'] 将字符ABC...Z转换为数字 需要注意的是重新开一个数组 c [ ] 存储字符串 应人为的在末尾附上 ‘ \ 0 ’ 详见代码: /*ID: who jayLANG: C++TASK: namenum*/#include<stdio.h>#include<string.h>int main(){FILE *fin = fopen (

hdu 3065 AC自动机 匹配串编号以及出现次数

题意: 仍旧是天朝语题。 Input 第一行,一个整数N(1<=N<=1000),表示病毒特征码的个数。 接下来N行,每行表示一个病毒特征码,特征码字符串长度在1—50之间,并且只包含“英文大写字符”。任意两个病毒特征码,不会完全相同。 在这之后一行,表示“万恶之源”网站源码,源码字符串长度在2000000之内。字符串中字符都是ASCII码可见字符(不包括回车)。

二分最大匹配总结

HDU 2444  黑白染色 ,二分图判定 const int maxn = 208 ;vector<int> g[maxn] ;int n ;bool vis[maxn] ;int match[maxn] ;;int color[maxn] ;int setcolor(int u , int c){color[u] = c ;for(vector<int>::iter

POJ 3057 最大二分匹配+bfs + 二分

SampleInput35 5XXDXXX...XD...XX...DXXXXX5 12XXXXXXXXXXXXX..........DX.XXXXXXXXXXX..........XXXXXXXXXXXXX5 5XDXXXX.X.DXX.XXD.X.XXXXDXSampleOutput321impossible

每日一题|牛客竞赛|四舍五入|字符串+贪心+模拟

每日一题|四舍五入 四舍五入 心有猛虎,细嗅蔷薇。你好朋友,这里是锅巴的C\C++学习笔记,常言道,不积跬步无以至千里,希望有朝一日我们积累的滴水可以击穿顽石。 四舍五入 题目: 牛牛发明了一种新的四舍五入应用于整数,对个位四舍五入,规则如下 12345->12350 12399->12400 输入描述: 输入一个整数n(0<=n<=109 ) 输出描述: 输出一个整数

OmniGlue论文详解(特征匹配)

OmniGlue论文详解(特征匹配) 摘要1. 引言2. 相关工作2.1. 广义局部特征匹配2.2. 稀疏可学习匹配2.3. 半稠密可学习匹配2.4. 与其他图像表示匹配 3. OmniGlue3.1. 模型概述3.2. OmniGlue 细节3.2.1. 特征提取3.2.2. 利用DINOv2构建图形。3.2.3. 信息传播与新的指导3.2.4. 匹配层和损失函数3.2.5. 与Super

二分图的最大匹配——《啊哈!算法》

二分图 如果一个图的所有顶点可以被分为X和Y两个集合,并且所有边的两个顶点恰好一个属于X,另外一个属于Y,即每个集合内的顶点没有边相连,那么此图就是二分图。 二分图在任务调度、工作安排等方面有较多的应用。 判断二分图:首先将任意一个顶点着红色,然后将其相邻的顶点着蓝色,如果按照这样的着色方法可以将全部顶点着色的话,并且相邻的顶点着色不同,那么该图就是二分图。 java

web群集--nginx配置文件location匹配符的优先级顺序详解及验证

文章目录 前言优先级顺序优先级顺序(详解)1. 精确匹配(Exact Match)2. 正则表达式匹配(Regex Match)3. 前缀匹配(Prefix Match) 匹配规则的综合应用验证优先级 前言 location的作用 在 NGINX 中,location 指令用于定义如何处理特定的请求 URI。由于网站往往需要不同的处理方式来适应各种请求,NGINX 提供了多种匹