刷题练习3

news/2024/12/2 18:40:10/

文章目录

  • 题目一
    • 分析
    • 题解
  • 题目二
    • 分析
      • 第一种
      • 第二种
    • 题解
      • 第一种方法代码
      • 第二种方法代码


题目一

题目链接
描述
读入一个字符串str,输出字符串str中的连续最长的数字串
输入描述:
个测试输入包含1个测试用例,一个字符串str,长度不超过255。
输出描述:
在一行内输出str中里连续最长的数字串。

分析

其实这道题的核心思路就是找到连续最长的数字串.
我的具体思路如下:
1.遍历字符串,使用cur去记录连续的数字串,如果遇到不是数字字符,则表示一个连续的数字串结束了
2.
则将数字串跟之前的数字串比较,如果更长,则更新更长的数字串更新到res。

具体图解如下:
在这里插入图片描述

题解

具体的代码:

import java.util.Scanner;
public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);String str = sc.nextLine();String ret = "";String cur = "";int i = 0;for (; i < str.length(); i++) {char ch = str.charAt(i);if (ch >= '0' && ch <= '9') {cur = cur + ch + "";} else {if (ret.length() < cur.length()) {ret = cur;}cur = "";}}
//处理123abc123456这种情况if (i == str.length() && ret.length() < cur.length()) {ret = cur;}System.out.println(ret);
}
}

题目二

题目链接
描述
给一个长度为 n 的数组,数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。
例如输入一个长度为9的数组[1,2,3,2,2,2,5,4,2]。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。

分析

这道题,我们的思路是找到数组出现次数最多的数字.当然我会提供俩种思路

第一种

1.排序,找到中间数X
2.遍历数组,确认X是不是出现次数最多的数
在这里插入图片描述

第二种

这种的思路如下;
找众数
众数:就是出现次数超过数组长度一半的那个数字
如果两个数不相等,就消去这两个数,最坏情况下,每次消去一个众数和一个非众数,那么如果存在众数,最后留下的数肯定是众数。
怎么个找法呢?
大家请看,以下图示:
在这里插入图片描述

题解

第一种方法代码

import java.util.*;
public class Solution {public int MoreThanHalfNum_Solution(int [] array) {if (array == null || array.length == 0) {return 0;}Arrays.sort(array);int len = array.length;int midNum = array[len / 2];int count = 0;for (int i = 0; i < len; i++) {if (array[i] == midNum) {count++;}}if (count > len / 2) {return midNum;}return 0;}
}

第二种方法代码

import java.util.*;
public class Solution {public int MoreThanHalfNum_Solution(int [] array) {if (array == null || array.length == 0) {return 0;}int result = array[0];int times = 1; // 次数for (int i = 1; i < array.length; ++i) {if (times != 0) {if (array[i] == result) {++times; // 相同则加1} else {--times; // 不同则减1}} else {
// 更新result的值为当前元素,并置次数为1result = array[i];times = 1;}}
// 判断result是否符合条件,即出现次数大于数组长度的一半times = 0;for (int i = 0; i < array.length; ++i) {if (array[i] == result) ++times;}return (times > array.length / 2) ? result : 0;}}

http://www.ppmy.cn/news/58316.html

相关文章

android四大组件之一-Activity实现原理分析

前言&#xff1a; 这篇文章是我花费时间最久的一篇文章&#xff0c;整整的两个月。整个流程繁琐是一个方面的原因&#xff0c;另外一个原因是我想尽可能的把整个流程的逻辑尽可能详细的一一描述出来&#xff0c;以及结合到我们项目中遇到的一些问题来进行解释&#xff0c;毕竟…

Reflection java反射源码分析

Reflection 源码分析 定义 Java的反射&#xff08;reflection&#xff09;机制是指在程序的运行状态中&#xff0c;可以构造任意一个类的对象&#xff0c;可以了解任意一个对象所属的类&#xff0c;可以了解任意一个类的成员变量和方法&#xff0c;可以调用任意一个对象的属性…

01背包问题个人剖析

背包问题 文章目录 背包问题1 01背包问题1.1 问题阐述1.2 问题分析 背包问题中我最初的一些疑惑 1 01背包问题 我参考了文献背包九讲。https://github.com/tianyicui/pack/raw/master/V2.pdf 背包九讲的作者是ACM大牛崔天翼。 1.1 问题阐述 有 N N N件物品和一个容量为 V V …

小红书违禁词有哪些,小红书违禁词汇总分享

大家都知道小红书平台对于违禁词的管控一向非常严格&#xff0c;笔记中一旦出现就可能被限流&#xff0c;今天为大家整理了一份小红书违禁词汇总&#xff0c;希望能够帮助大家避免被限流。 小红书违禁词汇总大致有以下几个分类&#xff0c;大家平时写笔记的时候最好避开这些词或…

辅助驾驶功能开发-功能规范篇(16)-2-领航辅助系统NAP-功能ODD定义

1.系统定义 智能驾驶系统包含行车场景功能和泊车场景功能,行车场景功能包括安全ADAS功能、基础ADAS功能和高阶ADAS功能三大类,本文档定义高阶ADAS功能中的导航辅助驾驶功能用例。 1.1.高阶ADAS功能列表 功能需求ID 功能分类 功能名称

网络安全入门基础知识

计算机网络 计算机网络是利用通信线路将不同地理位置、具有独立功能的计算机和通信设备连接起来&#xff0c;实现资环共享和信息传递等目的的计算机系统。 主要有局域网&#xff0c;城域网&#xff0c;广域网&#xff0c;和互联网等 信息系统 信息系统是能进行信息采集、传…

Qt常用快捷键

Qt常用快捷键 1.添加头文件&#xff1a;Alt Enter2.查看槽函数的实现 位置&#xff1a;F2 / F43.快速查看帮助文档&#xff1a;F14.代码快速对齐&#xff1a;Ctrl I5.代码全选&#xff1a;Ctrl A6.保存&#xff1a;Ctrl S7.代码复制&#xff1a;Ctrl C8.代码粘贴&#xff…

动态规划——最大子数组和

问题描述&#xff1a; 最大子数组和Time Limit: 1000 MSMemory Limit: 5000 KB Description 给定一个长度为N的int型数组a[0,1,2,...N-1], 请计算最大子数组和.Input 第一行输入M表示包含M组测试数据&#xff0c;每组先输入N (N<50000), 接着输入N个int型整数.Output 输…