卡码网笔试 | 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

相关文章

Java数字转换工具类NumberUtil的使用

《Java数字转换工具类NumberUtil的使用》NumberUtil是一个功能强大的Java工具类,用于处理数字的各种操作,包括数值运算、格式化、随机数生成和数值判断,下面就来介绍一下Number... 目录一、NumberUtil类概述二、主要功能介绍1. 数值运算2. 格式化3. 数值判断4. 随机

关于Gateway路由匹配规则解读

《关于Gateway路由匹配规则解读》本文详细介绍了SpringCloudGateway的路由匹配规则,包括基本概念、常用属性、实际应用以及注意事项,路由匹配规则决定了请求如何被转发到目标服务,是Ga... 目录Gateway路由匹配规则一、基本概念二、常用属性三、实际应用四、注意事项总结Gateway路由

C#从XmlDocument提取完整字符串的方法

《C#从XmlDocument提取完整字符串的方法》文章介绍了两种生成格式化XML字符串的方法,方法一使用`XmlDocument`的`OuterXml`属性,但输出的XML字符串不带格式,可读性差,... 方法1:通过XMLDocument的OuterXml属性,见XmlDocument类该方法获得的xm

JSON字符串转成java的Map对象详细步骤

《JSON字符串转成java的Map对象详细步骤》:本文主要介绍如何将JSON字符串转换为Java对象的步骤,包括定义Element类、使用Jackson库解析JSON和添加依赖,文中通过代码介绍... 目录步骤 1: 定义 Element 类步骤 2: 使用 Jackson 库解析 jsON步骤 3: 添

linux报错INFO:task xxxxxx:634 blocked for more than 120 seconds.三种解决方式

《linux报错INFO:taskxxxxxx:634blockedformorethan120seconds.三种解决方式》文章描述了一个Linux最小系统运行时出现的“hung_ta... 目录1.问题描述2.解决办法2.1 缩小文件系统缓存大小2.2 修改系统IO调度策略2.3 取消120秒时间限制3

Java 字符数组转字符串的常用方法

《Java字符数组转字符串的常用方法》文章总结了在Java中将字符数组转换为字符串的几种常用方法,包括使用String构造函数、String.valueOf()方法、StringBuilder以及A... 目录1. 使用String构造函数1.1 基本转换方法1.2 注意事项2. 使用String.valu

python修改字符串值的三种方法

《python修改字符串值的三种方法》本文主要介绍了python修改字符串值的三种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录第一种方法:第二种方法:第三种方法:在python中,字符串对象是不可变类型,所以我们没办法直接

JAVA中整型数组、字符串数组、整型数和字符串 的创建与转换的方法

《JAVA中整型数组、字符串数组、整型数和字符串的创建与转换的方法》本文介绍了Java中字符串、字符数组和整型数组的创建方法,以及它们之间的转换方法,还详细讲解了字符串中的一些常用方法,如index... 目录一、字符串、字符数组和整型数组的创建1、字符串的创建方法1.1 通过引用字符数组来创建字符串1.2

C#中字符串分割的多种方式

《C#中字符串分割的多种方式》在C#编程语言中,字符串处理是日常开发中不可或缺的一部分,字符串分割是处理文本数据时常用的操作,它允许我们将一个长字符串分解成多个子字符串,本文给大家介绍了C#中字符串分... 目录1. 使用 string.Split2. 使用正则表达式 (Regex.Split)3. 使用

Java中JSON字符串反序列化(动态泛型)

《Java中JSON字符串反序列化(动态泛型)》文章讨论了在定时任务中使用反射调用目标对象时处理动态参数的问题,通过将方法参数存储为JSON字符串并进行反序列化,可以实现动态调用,然而,这种方式容易导... 需求:定时任务扫描,反射调用目标对象,但是,方法的传参不是固定的。方案一:将方法参数存成jsON字