(每日一题)字符串中的最大正整数

一、题目表述

描述:

        该程序接受一个字符串作为输入,并找出字符串中最大正整数的起始位置。如果字符串中不包含任何正整数,则返回位置0。正整数由连续的数字字符组成,并且不考虑正负号。程序应遍历字符串中的每个字符,当遇到数字字符时,将其组合成一个整数,并更新最大整数及其位置。最后,程序应返回最大正整数的起始位置。

示例1:

输入:
"hello123world"

输出:
5

示例2:

输入:
"nopositivenumbers"

输出:
0

二、题解

1、分析

核心思想:在给定的字符串中查找最大的正整数,并返回这个正整数在字符串中的起始位置。代码会遍历字符串中的每个字符,当遇到数字时,会尝试将连续的数字字符组合成一个整数,并与当前的最大整数进行比较。如果找到了更大的整数,则更新最大整数和对应的位置。

2、代码

public class Main {  
  
    // 方法:在字符串中查找最大的正整数并返回其起始位置  
    public static int findMaxPositiveIntegerPosition(String input) {  
        int maxInteger = 0; // 初始化最大正整数为0  
        int position = 0; // 初始化位置为0  
  
        // 遍历字符串中的每个字符  
        for (int i = 0; i < input.length(); i++) {  
            char currentChar = input.charAt(i);  
  
            // 如果当前字符是数字  
            if (Character.isDigit(currentChar)) {  
                int num = 0;  
                  
                // 将连续的数字字符组合成一个整数  
                while (i < input.length() && Character.isDigit(input.charAt(i))) {  
                    num = num * 10 + Character.getNumericValue(input.charAt(i));  
                    i++;  
                }  
  
                // 如果当前整数大于之前的最大整数  
                if (num > maxInteger) {  
                    maxInteger = num;  
                    // 计算最大正整数的起始位置(注意:这里减去的是整数的字符串长度,而不是循环中的i增量)  
                    position = i - String.valueOf(num).length();   
                }  
            }  
        }  
  
        // 返回最大正整数的起始位置  
        return position;  
    }  
  
    // 主方法:测试findMaxPositiveIntegerPosition方法  
    public static void main(String[] args) {  
        String input = "abc123xyz45def6789"; // 输入字符串  
        int position = findMaxPositiveIntegerPosition(input);  
  
        // 根据返回的位置值,输出相应的信息  
        if (position > 0) {  
            System.out.println("最大正整数的起始位置为: " + position);  
        } else {  
            System.out.println("输入中没有正整数,返回位置为: 0");  
        }  
    }  
}

注:在position的计算中,我们减去了整数的字符串长度,而不是在while循环中递增的i的值。这是因为while循环中的i是在不断递增的,而我们想要得到的是整数的起始位置,所以应该减去整数的字符串长度。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ai旅人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值