刷题练习3

这篇具有很好参考价值的文章主要介绍了刷题练习3。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


题目一

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

分析

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

具体图解如下:
刷题练习3

题解

具体的代码:

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是不是出现次数最多的数
刷题练习3

第二种

这种的思路如下;
找众数
众数:就是出现次数超过数组长度一半的那个数字
如果两个数不相等,就消去这两个数,最坏情况下,每次消去一个众数和一个非众数,那么如果存在众数,最后留下的数肯定是众数。
怎么个找法呢?
大家请看,以下图示:
刷题练习3文章来源地址https://www.toymoban.com/news/detail-433591.html

题解

第一种方法代码

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的值为当前元素,并置次数为1
                result = 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;
    }
    }


到了这里,关于刷题练习3的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • LeetCode竞赛题目—在LR字符串中交换相邻字符

    作者: 渴望力量的土狗 博客主页:渴望力量的土狗的博客主页 专栏:每日一道LeetCode 工欲善其事必先利其器,给大家介绍一款超牛的斩获大厂offer利器——牛客网 点击免费注册和我一起刷题吧 目录 题目描述:在LR字符串中交换相邻字符 解答思路:双指针法 分析: Java解题

    2024年01月21日
    浏览(44)
  • 题目:2609.最长平衡子字符串

    ​​ 题目来源:         leetcode题目,网址:2609. 最长平衡子字符串 - 力扣(LeetCode) 解题思路:        按要求进行模拟即可。 解题代码: 总结:         注意,当 1 的数量小于等于 0 的数量,可以组成一个长度为 1 的数量两倍的平衡字符串。         无官方题解。

    2024年02月12日
    浏览(28)
  • 算法刷题-字符串-左旋转字符串

    反转个字符串还有这么多用处? 力扣题目链接 字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串\\\"abcdefg\\\"和数字2,该函数将返回左旋转两位得到的结果\\\"cdefgab\\\"。 示例 1: 输入: s = “abcde

    2024年02月09日
    浏览(35)
  • 题目:1967.作为子字符串出现在单词中的字符串数组

    ​ 题目来源:         leetcode题目,网址:1967. 作为子字符串出现在单词中的字符串数目 - 力扣(LeetCode) 解题思路:         遍历字符串数组,根据 word.indexOf(pattern) 的返回值是否为 -1 判断改字符串是否为单词的字符串并对其计数即可。 解题代码: 总结:         官方

    2024年02月13日
    浏览(41)
  • 算法刷题-字符串-反转字符串II

    简单的反转还不够,我要花式反转 力扣题目链接 给定一个字符串 s 和一个整数 k,从字符串开头算起, 每计数至 2k 个字符,就反转这 2k 个字符中的前 k 个字符。 如果剩余字符少于 k 个,则将剩余字符全部反转。 如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,

    2024年02月09日
    浏览(35)
  • 算法刷题-字符串-重复的子字符串

    KMP算法还能干这个 力扣题目链接 给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母,并且长度不超过10000。 示例 1: 输入: “abab” 输出: True 解释: 可由子字符串 “ab” 重复两次构成。 示例 2: 输入: “aba” 输出: False 示

    2024年02月09日
    浏览(35)
  • 题目:2185.统计包含给定前缀的字符串

    ​​ 题目来源:         leetcode题目,网址:2185. 统计包含给定前缀的字符串 - 力扣(LeetCode) 解题思路:        遍历判断即可。 解题代码: 总结:         官方题解也是一样的思路。

    2024年02月15日
    浏览(36)
  • 题目:2027.转换字符串的最少操作次数

    ​​ 题目来源:         leetcode题目,网址:2027. 转换字符串的最少操作次数 - 力扣(LeetCode) 解题思路:        遍历字符串,如果当前位置字符是 \\\'X\\\',计数加一并将当前元素及其后面的元素变为\\\'0\\\',然后继续遍历字符串。最后返回计数结果即可。 解题代码: 总结:  

    2024年02月16日
    浏览(29)
  • 算法刷题-字符串-翻转字符串里的单词

    综合考察字符串操作的好题。 力扣题目链接 给定一个字符串,逐个翻转字符串中的每个单词。 示例 1: 输入: “the sky is blue” 输出: “blue is sky the” 示例 2: 输入: \\\" hello world! \\\" 输出: “world! hello” 解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不

    2024年02月09日
    浏览(88)
  • 【C语言】字符串---刷题篇

    Hi,C站的小伙伴们大家好呀!😊🥰,欢迎来阅读我的这一篇 【C语言】字符串基础刷题篇! 不知你是否和我一样,在刚刚接触到这块的知识时,总是会和这神圣的知识隔着隔着厚厚的一堵墙,迷茫的眼神中总是会露出不理解不理解😣😣(当时的状态……) 其实后来我就发现其实

    2024年02月03日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包